SetAdapter "Для вызова требуется уровень API 11 (текущий мин – 8): android.widget.AbsListView # setAdapter"?

Я setAdapter() метод setAdapter() в классе, который расширяет Fragment . Обратите внимание: я импортировал android.support.v4.app.Fragment .

Однако я получаю сообщение об ошибке, согласно которой уровень API должен быть уровнем 11.

Что я должен сделать, чтобы исправить это, не меняя minSdkVersion="8" на minSdkVersion="11"

 package foo.bar.qux; import java.util.Calendar; import java.util.Date; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import android.support.v4.app.Fragment; import android.app.Activity; 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; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) return null; return (LinearLayout) inflater.inflate(R.layout.eventlist, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Activity activity = getActivity(); if (activity != null) { final Calendar c = Calendar.getInstance(); ListContent[] item = new ListContent[3]; category = (String) activity.getIntent().getExtras() .get("category"); xml = (String) activity.getIntent().getExtras().get("xml"); TextView tv = (TextView) getView().findViewById(R.id.category); tv.setText(category); 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(R.id.listView1); lv.setAdapter(adapter); // ERROR SHOWN HERE } } } 

Примечание. Я попытался уменьшить targetSdkVersion до 10. Но я получаю ошибку. Пожалуйста помоги!

Изменить: я не понимаю, почему это называется AbsListVew когда все, что я использовал, это ListView . Также обратите внимание, что я использовал пользовательский адаптер.

EventListAdapter расширяет ArrayAdaptere<ListContent> и показывает NO ERROR.

Для справки здесь приведен фрагмент кода xml layout для R.id.ListView1

 <ListView android:layout_margin="10dp" android:dividerHeight="10.0sp" android:id="@+id/listView1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

Solutions Collecting From Web of "SetAdapter "Для вызова требуется уровень API 11 (текущий мин – 8): android.widget.AbsListView # setAdapter"?"

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

«Запустить Android Lint» делает некоторые маркеры, и маркеры вызывают эту ошибку.

Решение – это просто тип каста для исправления подтипа, так как более поздние версии Android ввели вызов метода с тем же именем.

 @SuppressWarnings({ "unchecked", "rawtypes" }) EventListAdapter adapter = new EventListAdapter(activity, R.layout.eventlist_row, item); lv = (ListView) getView().findViewById(R.id.listView1); ((AdapterView)lv).setAdapter(adapter); //ERROR SOLVED HERE 

Как вы можете видеть в setAdapter() docs setAdapter() на AbsListView доступен только с уровня API 11. Таким образом, вы не можете много сделать, вы можете просто отбросить в конечном итоге свой AbsListView в ListView или GridView а затем вызвать setAdapter() .

Я решил «абстрактный метод не реализованной ошибки», применив метод setAdapter следующим образом:

  @SuppressWarnings("unchecked") public void setAdapterSDK8(Adapter adapter) { ((AdapterView) this).setAdapter(adapter); ((StaggeredGridView) this).setAdapter((ListAdapter) adapter); } 

Это связано с шахматной сеткой etsy