《黑马程序员安卓教程:ListView 的常见适配器》由会员分享,可在线阅读,更多相关《黑马程序员安卓教程:ListView 的常见适配器(3页珍藏版)》请在金锄头文库上搜索。
1、ListView 的常见适配器的常见适配器除了经常使用到的 BaseAdapter 外,系统还提供了几个已经实现好的适配器,如图 1-8 所示。29图 1-8常见适配器ArrayAdapter【文件文件 1-26】ArrayAdapter 的用法1.ListView listView = (ListView) findViewById(R.id.listview);2.String datas = new String“zhangsan“,“lisi“,“wangwu“,“zhaoliu“; 3./*4.* 第一个参数是:上下文5.* 第二个参数是:布局文件的 id,这里使用 Android
2、系统提供的简单布局6.* 第三个参数是:要显示的数据,数组或者 List 集合都行 7.*/8.ArrayAdapter arrayAdapter =9. new ArrayAdapter(this, android.R.layout.simple_list_item_1, datas ); 10.listView.setAdapter(arrayAdapter);运行结果如图 1-9 所示:图 1-9 ArrayAdapter 效果图观测 ArrayAdapter 源码,查看 getView 方法,见【文件 1-27】,发现其已经通过覆写 convertView 实现了对 ListView
3、的优化,【文件文件 1-27】 ArrayAdapter getView 方法源码1.public View getView(int position, View convertView, ViewGroup parent) 2.return createViewFromResource(position, convertView, parent, mResource); 3.4.private View createViewFromResource(int position, View convertView,5. ViewGroup parent,6.intresource)7.View
4、view;8.TextView text;309.10.if (convertView = null) 11.view = mInflater.inflate(resource, parent, false); 12. else 13.view = convertView;14.15.try 16.if (mFieldId = 0) 17./If no custom field is assigned, assume the whole resource is a TextView18.text = (TextView) view; 19. else 20./Otherwise, find t
5、he TextView field within the layout21.text = (TextView) view.findViewById(mFieldId); 22.23. catch (ClassCastException e) 24.Log.e(“ArrayAdapter“, “You must supply a resource ID for a TextView“);25.throw new IllegalStateException(26.“ArrayAdapter requires the resource ID to be a TextView“, e); 27.28.T item = getItem(position);29.if (item instanceof CharSequence) 30.text.setText(CharSequence)item);31. else 32.text.setText(item.toString();33.34.return view;35.