最近用到了ListView控件,总结了一下他的使用方法。
1.概述:ListView一个非常重要的控件 , 它可以用来显示极其庞大的数据,就算这个数据有几百万条也不会让程序崩溃.它基于MVC模式设计。
代码演示:
使用步骤:
1. 定义布局
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. 查找控件
//查找视图 。找到定义的listView V
ListView listView = (ListView) findViewById(R.id.lv);
3. 编写适配器
* 本来要实现的ListAdapter ,方法太多,不利于开发,这个时候可以换一个叫角度去想问题。
* 改为去继承系统已经实现ListAdapter的一些实现类,就可以了。
class MyAdapter extends BaseAdapter{
//用于控制到底显示多少个条目
@Override
public int getCount() {
//这里设置了50000条
return 50000;
}
//用于控制每一个条目到底长什么样子,说的专业一点就是:到底每一个条目显示什么控件,这些控件是如何摆放的。
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(MainActivity.this);
System.out.println("position===="+position);
tv.setText("奥黛丽.赫本------->"+position);
tv.setTextSize(20);
//一定要返回显示的视图
return tv;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
}
4. 绑定适配器
//设置显示的数据适配器 ,实际上就是绑定控制器 C
listView.setAdapter(new MyAdapter());
ListView的优化
1. 如果没有做任何的优化,那么实现过多的数据,快速的滑动也会出现内存溢出的异常。
2. 解决办法,如下代码:
TextView tv ;
if(convertView == null){ //代表的是第一屏显示的条目
System.out.println("不存在缓存,需要创建textview--->"+position);
tv = new TextView( MainActivity.this);
}else{ //存在复用的textView对象
System.out.println("存在缓存,使用缓存-->"+position);
tv = (TextView) convertView;
}