适配器
android的适配器:将数据绑定到视图上去,以何种方式来展示显示的格式。其作用其实是连接数据和AdpterView的桥梁。
理清楚 数据源,AdpterView,适配器之间的关系
AdpterView:Gallery,ListView和Spinner,Gridview等是AdapterView的子类。
通常的,我们有使用三个适配器:ArrayAdpter, SimpleAdpter,SimpleCursorAdpter.它们都继承自BaseAdpter.
重点关心它们的数据源
ArrayAdpter:实现简单的listview的数据绑定,默认情况下绑定每个对象的toString值到layout中预先定义好的Textview上。注意这个参数的顺序和意义就行了,this表示上写文。ArrayAdapter<String>(this,Android.R.Layout.Simple_List_Item_1,sex);这边注意一下,继承了listactivity,该activity只能有一个listview,已经封装了一个listview在其中,所以可以不需要setcontview()方法来绑定布局。关于listactivty的用法读者可以找点资料看看。
public class Example extends ListActivity{ String[] sex = new String(){"男",“女”}//数据源 ArrayAdapter<String> adapter;//数组适配器,用的是泛型 public voidonCreate(Bundle SavedInstanceState){ super.onCreate(SavedInstanceStat); //在对适配器初始化的时候,顺便把数据源装载到适配里, //this.Android.R.Layout.Simple_List_Item_1这句话的意思是将数据源以系统定义好的样式放 到适配器里. adapter=newArrayAdapter<String>(this,Android.R.Layout.Simple_List_Item_1,sex); this.setAdapter(adapter);//这是一个控件类,所以可以直接将适配器绑定到本身对象中。 } }
SimpleAdpter:notifyDataSetChange()可以刷新adpterview上的数据,相当于html中页面重加载一样。这了也注意SimpleAdapter(this, mylist,//数据来源 R.layout.my_listitem,// 每行的布局//动态数组与ListItem对应的子项。可以通过对listview.setOnItemClickListener来设置对每列的监听事件。
new String[]{"ItemTitle", "ItemText"}, //ListItem的XML文件里面的两个TextView ID new int[] {R.id.ItemTitle,R.id.ItemText});
List作为数据源,填充的是SimpleAdapter ListView list = (ListView)findViewById(R.id.MyListView); //生成动态数组,并且转载数据 ArrayList<HashMap<String, String>> mylist = newArrayList<HashMap<String, String>>(); for(int i=0;i<30;i++) { HashMap<String, String>map = new HashMap<String, String>(); map.put("ItemTitle","This is Title....."); map.put("ItemText","This is text....."); mylist.add(map); } //生成适配器,数组===》ListItem SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释 mylist,//数据来源 R.layout.my_listitem,//ListItem的XML实现 //动态数组与ListItem对应的子项 new String[]{"ItemTitle", "ItemText"}, //ListItem的XML文件里面的两个TextView ID new int[] {R.id.ItemTitle,R.id.ItemText}); //添加并且显示 list.setAdapter(mSchedule); }
SimpleCursorAdpter:
SimpleCursorAdapter一般主要用于数据库,它的数据来源一般都是数据库查询得到的Cursor 我们来看下面的例子: String uriString = “content://contacts/people/”; Cursor myCursor =managedQuery(Uri.parse(uriString), null, null, null, null); String[] fromColumns = new String[]{People.NUMBER, People.NAME}; int[] toLayoutIDs = new int[] {R.id.nameTextView, R.id.numberTextView}; SimpleCursorAdapter myAdapter; myAdapter=newSimpleCursorAdapter(this,R.layout.simplecursorlayout,myCursor,fromColumns, toLayoutIDs);//传入当前的上下文、一个layout资源,一个游标和两个数组:一个包含使用的列 //的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数 据值。 myListView.setAdapter(myAdapter);我们把一个游标绑定到了ListView上,并使用自定义的layout显示来显示每一个Item。
更多相关文章
- 【转】java 总结:泛型
- 初识Android(安卓)Adapter
- Android(安卓)ListView的创建以及数据适配器的使用
- Android(安卓)JNI 学习笔记
- Android开发适配器系列:AutoCompleteTextView和MultiAutoComplete
- Android中hw_get_module函数分析
- Android(安卓)SimpleAdapter的参数
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android(安卓)贪吃贪游戏(源码详解和改进)