自定义适配器的实现
实现自定义适配器之前,先讲一讲arrayAdapter和simpleadapter的区别:
arrayAdapter适用在只是textview呈现字符串的适配上。simpleadapter可以适配多控件。
数据源:arrayAdapter的数据源List<String>
simpleadapter的数据源List<Map<String,Object>>
自定义适配器:
1内部类、、继承baseadapter实现里面四个方法
2通过代码将需要适配的数目指定,需要返回的view对象指定
实现自定义适配器的步骤和详细讲解:
1、在mainactivity中写一个内部类来继承baseadapter
class Myadapter extends baseadapter{}
2、根据系统提示写出自定义适配器的四个方法
//计算需要适配的item总数
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
//获取每一个item对象
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
//获取每一个对象的id
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
//获取每一个item对应的view视图
@Override
public View getView(int position, View convertView, ViewGroup parent) {
3、在activitymain.xml中写一个listview
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv"></ListView>
4、新建一个xml文件,名字为define_item.xml
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/myadapter_tv"
android:text="你好"/>
5、声明listview,list数据源,adapter
private List<String> list;
private ListView lv;
private Mydapter adapter;
6、初始化listview,list数据源,adapter
lv=(ListView) findViewById(R.id.lv);
list =new ArrayList<String>();
adapter=new Mydapter();
7、向list添加数据,使用for循环
for (int i = 0; i < 40; i++) {
list.add("数据"+i);
}
8、设置listview(lv)的适配器为Myadapter
lv.setAdapter(adapter);
9、写Myadapter中的第四个方法,这个方法很重要
①layoutInflater布局映射器
主要作用:将一个定义好的布局xml文件转化成为view对象
②获取布局映射器对象,通过from方法获取布局映射器
LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
③将定义好的xml文件转化为view对象
//findviewById与inflate的区别
(1)findviewById是从布局文件中查找一个控件
(2)inflate是加载一个布局文件
View view =inflater.inflate(R.layout.define_item, null);
④给view对象中的控件进行赋值
TextView tv=(TextView) view.findViewById(R.id.myadapter_tv);
设置内容
tv.setText(getItem(position));
return view;
以上是我自己的理解,如果有错误,还望指教。