ListView和AbsListView之间的区别

时间:2015-07-09 11:53:01

标签: android api android-listview

在我的项目中,我使用AbsListViewListView中处理/创建Fragment。它工作正常,但Android Studio检查告诉我AbsListView需要API 11.现在我想知道用ListView替换它是否更好,或者只是插入{{1}设置(ListView)的位置。

Adapter

VS

private ListView mListView;
mListView.setAdapter(mAdapter);

2 个答案:

答案 0 :(得分:1)

如果您将实例作为公共类类型(AbsListView)处理,请使用前者。 否则,使用后者。

要获取您的信息,API11使用AbsListView并非setAdapter。(AbsListView API11需要ListView。)

所以,我建议使用setAdapterListView的{​​{1}}也需要API1

答案 1 :(得分:0)

AbsListView是一个抽象类:

 public abstract class AbsListView extends AdapterView<ListAdapter> implements TextWatcher, ViewTreeObserver.OnGlobalLayoutListener, Filter.FilterListener, ViewTreeObserver.OnTouchModeChangeListener

但是ListView是一个具体的类(可以实例化):

public class ListView extends AbsListView 

来自Android文档:

AbsListView ,可用于实现项目的虚拟列表

列表这里没有空间定义

该类的

子类可以在以下位置显示列表的内容:

  • 网格
  • 旋转木马
  • ListView
  • ...

但是:

ListView 显示一个可垂直滚动的视图集合。

每个视图都位于列表中上一个视图的紧下方。

因此可以将您的列表定义为AbsListView并动态选择如何将 View 实现为ListView,GridView等。

private AbsListView mListView;

但是要 setAdapter 时。您必须将其初始化为实例化视图,例如ListView:

mListView = new ListView();

或:

mListView = (ListView) findViewById(R.id.list_view);
mListView.setAdapter(mAdapter);