ListView
1-listview设置adapter(继承BaseAdapter )
class MyAdapter extends BaseAdapter {
// listview一共展示条目的个数
@Override
public int getCount() {
return 5;
}
// 根据Position的位置获取指定条目
@Override
public Object getItem(int position) {
return null;
}
// 根据指定位置获取条目的id
@Override
public long getItemId(int position) {
return 0;
}
/**
* 这个方法:获取一个view(TextView,ImageView) 展示条目的内容 其实就代表每个条目的view 用来展示指定的数据
* 索引从0开始 ,说明这个方法执行了10次. 当listview展示的条目
* 一屏幕显示不下的时候,第一次getview方法执行多少次?当屏幕第一次能展示多少个条目就执行多少次,
* 当我们拖动listview的时候,加载一个条目getView方法就执行一次
* <p>
* convertView:当 listview第一次加载的时候convertView是null
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/*
* 创建新的view对象 获取一个打气筒服务 把一个布局xml转换为View对象 参数1:context
* 参数2:要填充资源的id 就是我们转换的布局资源的id(将该布局转换为View对象) 参数3:viewGroup控件都要放到viewGroup这个类里()
*/
//listview优化:缓冲机制,reuse.
View view = null;
if (convertView == null) {
view = View.inflate(getApplicationContext(), R.layout.item, null);
} else {
view = convertView;
}
return view;
}
}
2-arrayadapter
当我有些简单的数据需要快速展示的时候,而且要展示的数据也不是特别多,数据的类型也不是特别复杂,这时候我就可以使用谷歌封装好的这个适配器
String objects[] = {"Android", "ios", "java", "php", "ui", "C"};
ListView lv = (ListView) findViewById(R.id.lv);
lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.item, objects));
3-simpleAdapter
List<Map<String, String>> data = new ArrayList<Map<String,String>>();
//参数三:代表listview条目的布局 from:就是map中定义的key
//参数四:from,String[]数组,里面是集合中定义的key值
//参数五:每个控件在R文件总都有个引用--为int类型值,int[]数组,里面就是定义相应字段在哪个控件中显示,即通过id找到控件
lv.setAdapter(new SimpleAdapter(getApplicationContext(), data, R.layout.item, new String[]{"name", "phone"}, new int[]{R.id.tv_name, R.id.tv_phone}));