setAdapter "Call requires API level 11 (current min is 8): android.widget.AbsListView#setAdapter"?-ThrowExceptions

Exception or error:

I’m calling the setAdapter() method in a class that extends Fragment. Note that I have imported .

However I get an error stating that the API level is required to be level 11.

What do I have to do so that I can fix this without changing minSdkVersion="8" to minSdkVersion="11"


import java.util.Calendar;
import java.util.Date;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;


import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class TabFragmentList extends Fragment {

    String category, xml;
    NodeList nodes;
    int numResults;
    private ListView lv;
    Date date;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        if (container == null) return null;
        return (LinearLayout) inflater.inflate(R.layout.eventlist, container,

    public void onActivityCreated(Bundle savedInstanceState) {
        Activity activity = getActivity();
        if (activity != null) {
            final Calendar c = Calendar.getInstance();
            ListContent[] item = new ListContent[3];
            category = (String) activity.getIntent().getExtras()
            xml = (String) activity.getIntent().getExtras().get("xml");
            TextView tv = (TextView) getView().findViewById(;
            nodes = doc.getElementsByTagName("event");
            for (int i = 0; i < 3; i++) {
                c.add(Calendar.DATE, 1);
                date = c.getTime();
                item[i] = new ListContent();
                item[i].setList(nodes, category, date);
            EventListAdapter adapter = new EventListAdapter(activity,
                    R.layout.eventlist_row, item);
            lv = (ListView) getView().findViewById(;
            lv.setAdapter(adapter); // ERROR SHOWN HERE

Note : I tried reducing the targetSdkVersion to 10. Yet I get the error. Please help!

Edit : I don’t understand why it’s termed as AbsListVew when all that I have used is a ListView. Also, note that I’ve used a custom adapter.

EventListAdapter extends ArrayAdaptere<ListContent> and shows NO ERROR.

For your reference here is the xml layout code snippet for

        android:layout_height="fill_parent" />
How to solve:

Right click on the project folder > Android tools > Clear Link Markers

“Run Android Lint” makes some markers and the markers cause this error.


Solution is just casting type to correct subtype as later Android versions introduced method call with same name.

@SuppressWarnings({ "unchecked", "rawtypes" })

EventListAdapter adapter = new EventListAdapter(activity, R.layout.eventlist_row, item);
lv = (ListView) getView().findViewById(;
((AdapterView)lv).setAdapter(adapter); //ERROR SOLVED HERE


As you can see in the docs setAdapter() method on AbsListView is available just from API Level 11. So there isn’t much you can do, you can just cast eventually your AbsListView to a ListView or GridView and then call setAdapter().


I solved the “abstract method not implemented error” by casting my setAdapter method like this:

 public void setAdapterSDK8(Adapter adapter) {
    ((AdapterView) this).setAdapter(adapter);
    ((StaggeredGridView) this).setAdapter((ListAdapter) adapter);

This is related to the etsy staggered gridview

Leave a Reply

Your email address will not be published. Required fields are marked *