本文来自,引用必须注明出处!
ListView这几个Adapter究竟有什么不同,查了一下,其实主要是数据源不同,导致了不同的用法
ArrayAdapter 来源于字符串数组SimpleAdapter 来源是List<Map<String,?>>格式的数据
SimpleCursorAdapter 来源于数据库
SimpleAdapter 相对于ArrayAdapter复杂一点,但可以显示更丰富的内容。
再来看看代码吧:
package com.fable.helloworld; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; import java.util.*;public class HelloWorldActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello_world); //绑定XML中的ListView,作为Item的容器 ListView listView = (ListView) findViewById(R.id.MyListView); //生成动态数组,并且转载数据 ArrayList上文中可以看出,使用了自己的布局文件:> mylist = new ArrayList >(); for(int i=0;i<5;i++) { HashMap map = new HashMap (); map.put("title", "我是标题" + i); map.put("text", "我是子标题" + i); mylist.add(map); } //生成适配器,数组===》ListItem SimpleAdapter mSchedule = new SimpleAdapter(this, //上下文,就是这个Activity mylist,//数据来源 R.layout.my_list_item,//ListItem的XML实现 new String[] {"title", "text"},//动态数组与ListItem对应的子项 new int[] {R.id.ItemTitle,R.id.ItemText});//ListItem的XML文件里面的两个TextView ID //添加并且显示 listView.setAdapter(mSchedule); } }
/HelloWorld/res/layout/activity_hello_world.xml
再来一个列表项的布局文件:/HelloWorld/res/layout/my_list_item.xml
===================================================================================================================
今天本来还想说说SimpleCursorAdapter。在网上找了一些例子,放进Eclipse里面,发现被弃用了。
认真看一下,原来是这个构造函数被改了。现在推荐用这个了,多了个flags
SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to,int flags)
不过没关系,我是新手,一样是新接触的。
context 上下文信息,传this进去就行了。
layout 布局文件,我们使用系统提供简单的格式吧
flags是一个标识,标识当数据改变调用onContentChanged()的时候,是否通知ContentProvider数据的改变,如果无需监听ContentProvider的改变,则可以传0。对于SimpleCursorAdapter适配器的Cursor的改变,可以使用SimpleCursorAdapter.swapCursor(Cursor)方法,它会与旧的Cursor互换,并且返回旧的Cursor。
很多内容都被弃用,改了之后,发现startMangingCursor的方法也被弃用了,怎么找都找不到,或者说找到的方法我看不懂。
所以决定暂时放下,以后补充,大家学习Android的时候,千万别想着把所有东西都搞清楚,再去实际动手,这是没有意义的。到动手的时候照样什么也不会。遇到技术问题去网上找,是在找不到,或者像现在这样访问数据库的问题太高级了,不是一个还没入门的人能做到的。所以暂时放下是一个不错的选择。继续往前走吧,少年!