实现自定义适配器之前,先讲一讲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;

以上是我自己的理解,如果有错误,还望指教。

更多相关文章

  1. listview中的Android listview适配器(json子程序)
  2. 适配器模式和外观模式
  3. 如何在JDBC数据源级别限制从Oracle返回的行数?
  4. Java读取数据源相关信息

随机推荐

  1. Android的线程使用来更新UI----Thread、H
  2. Android开机执行指定shell脚本
  3. 使用Android Studio下载Android Support
  4. Android开发 System.out.println(); 控制
  5. 如何实现对Android设备进行文本的模拟输
  6. 【Android(安卓)电量优化】电量优化 ( 充
  7. 仿微信备注 editext下划线
  8. [Android遊戲] 森林跑跑熊:iOS移植的殺時
  9. Android应用程序目录结构分析
  10. android中使用线程(比如修改textview的tex