ListView介绍


(图为listview)

ListView是目前手机软甲和电脑软件中常见的显示元素的方式,应用范围十分广泛,常见的如QQ的联系人界面,聊天记录界面,知乎主界面等等。


因此,熟练的掌握ListView的使用是每个Android初学者必须掌握的内容之一。

在Android中,用户可以通过ListView控件以列表的信息进行数据的浏览,并且可以上下滚动,点击子项交互等。


ListView的使用

最简单的ListView


首先我们来创建自己的第一个ListView。

1:在Andorid Studio中创建一个工程,最好选择 Empty Activity

2:然后再layout_main的布局文件中添加一个ListView控件,代码如下:

<ListView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:entries="@array/show_list"/>

仔细观察这几行代码,发现这个控件多了androdi:entries属性,entries属性的具体作用是什么呢?

API上的解释是 Reference to an array resource that will populate the ListView. 指定一个数组资源用来填充ListView。

下面是array的代码

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="show_list">        <item name="s1">Friends</item>        <item name="s2">How I met your mother</item>        <item name="s3">The Big Bang Theory</item>        <item name="s4">The Walking Dead</item>    </string-array></resources>

这个时候就能运行程序,运行结果就不贴不来了。

到此,我们就和ListView完成了第一次邂逅,激动嘛。(建议大家都转到Android Studio下面来开发,AS功能强大,界面漂亮,而且是Google亲儿子,比Eclipse好得多)


Adapter是什么

Adapter管理数据模型,并且将数据填充到每一个独立的实体中去。简单的理解,Adapter在ListView的应用情景下可以理解为ListView的数据填充和每一个item的显示效果管理的功能。

这张图很好的说明了Adapter和Adapter View之间的关系。

Adapter家族有着复杂的继承关系,想要明白的了解Adapter的用法,我们还得先搞清各种Adapter之间的继承关系才行。

请看下图


从图中不难看出。。。有点眼花,这张图啥意思虽然我一下子看不明白,但是很确定的一点就是:麻烦。不过不用担心,我们在此只介绍一些常用的Adapter,其他的Adapter以后慢慢就知道了。

Adapter常用的实现类


ArrayAdapter:是一个简单,易用的Adapter。之所以取名为ArrayAdapter是因为这个Adapter通常将数组或者是List集合绑定到ListView上。


SimpleAdapter:并不简单,功能强大的Adapter,可用于将List集合的多个对象包装成多个列表项。


BaseAdapter:通常用于扩展,能够对列表项进行最大限度地自定义。


接下来我们将会为每一个Adapter写一个demo,通过这三个demo之后,相信你肯定会对ListView的使用有了一点自己的认识,并能完成大部分的常见功能。


ArrayAdapter使用

为了使用ArrayAdapter,我们可以利用上面的代码或者是在工程里面新建一个module,因为第一个小例子没有改动很多代码,我就直接修改现有的工程进行ArrayAdapter例子

进行修改。

layout_main.xml 中对listview添加android:id属性,去除android:entries属性

<ListView        android:id="@+id/array_adapter_list"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />

MainActivity.java

public class MainActivity extends AppCompatActivity {    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (ListView)findViewById(R.id.array_adapter_list);        String[] dataset = new String[]{"Chandler", "Rosss", "Joey", "xusworld"};        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dataset);                mListView.setAdapter(arrayAdapter);    }}

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dataset);这行代码创建了一个ArrayAdapter对象,下面就来介绍一下ArrayAdapter的构造函数。
ArrayAdapter(Context context, int resource)ArrayAdapter(Context context, int resource, int textViewResourceId)ArrayAdapter(Context context, int resource, T[] objects)ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)ArrayAdapter(Context context, int resource, List<T> objects)ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)

在代码里面,我们使用了三参构造函数,直接指定了需要绑定的数据,当然我们也可以改写为

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);arrayAdapter.addAll(dataset);
效果和上面的代码是相同。
但是使用这个基本的ArrayAdapter的弊端也非常的明显,实现的效果十分有限,是不是ArrayAdapter的功能仅仅是这点程度呢?
不是不是,当然不是,




更多相关文章

  1. android HAL层代码
  2. Android(安卓)微信分享icon黑边代码解决
  3. 设置当TextView中的文字超过TextView的容量时,用省略号代替
  4. Android(安卓)Studio删除Project
  5. ArcGIS4Android开发----空间查询
  6. android 购物车数量加减计算(几行代码实现效果)
  7. Gson 自动过滤null 解决方案。
  8. android拨打电话二三事
  9. GreenDAO—Android(安卓)ORM框架(一)

随机推荐

  1. android 修改标题栏文字居中
  2. Android(安卓)adb shell 命令大全
  3. android textview 显示表情和文字 表情带
  4. Android IPC进程通信——Messager方式
  5. Android 学习笔记7---数据存储与访问
  6. Android入门:单元测试
  7. Android 记住listView的位置
  8. Ubuntu连接Android真机调试
  9. Android点亮屏幕
  10. Android——编译系统初始化设置