ListView
以垂直的形式显示所有的列表项
ListView只是容器,而里面的内容需要Adapter来负责提供每个“列表项”的组件。
在ListView的xml中,可以设置android:entries来指定数组资源来生成ListView,如果没有指定此属性,则需要通过Adapter来提供列表项。
ArrayAdapter:简单、易用的Adapter,通常用于将数组或List集合的多个值包装成多个列表项。
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1);
this代表引用对象,android.R.layout.simple_expandable_list_item_1代表的是系统自带的列表项
如何自定义列表项:
1、在layout里创建一个xml文件,如果使用ArrayAdapter,则列表项必须是TextView。
2、adapter = new ArrayAdapter<String>(this, R.layout.simple_expandable_list_item_1);改成自己xml的名称
1、创建activity
2、创建xml
3、修改Manifest.xml中的主activity
4、拷贝图片,在工程中drawable专门来放存放可以展示的资源的,注意图片的名称跟变量的命名规则一样,并且不能大写。
5、使用baseadapter来实现,baseadapter是一个抽象类。
baseadapter中getcount返回列表数量,getitem根据位置来取得列表项所关联的数据,getItemId根据位置来取得所指定位置关联的id,getView创建一个视图,只要是要呈现列表项的时候都会来执行。ListView里呈现几个,就执行几次getView。convertView为,不见时对象被操作系统回收,下面有数据时则从回收的对象中创建对象。如果有新的对象表时,操作系统会从对象池中查有没有被系统收回的对象。
优化机制:convertView
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println(">>>>>>>>>>>>>>>>>");
TextView tv = null;
if(convertView!=null){
tv=(TextView) convertView;
}else{
tv = new TextView(CustomListView.this);
}
tv.setTextSize(50);
tv.setText(getItem(position));
return tv;
}
能够呈现图标的列表:
如何根据资源来创建布局:
ll=(LinearLayout) LayoutInflater.from(CustomListView.this).inflate(R.layout.custom_listcell, null);
如何侦听列表相关事件:
lv.setOnItemClickListener(this);
直接一个ListActivity,布局改成他。快速创建列表应用程序的方法。
如果为ListActivity创建布局,则布局文件的id是确定的,为@android:id/list
以垂直的形式显示所有的列表项
ListView只是容器,而里面的内容需要Adapter来负责提供每个“列表项”的组件。
在ListView的xml中,可以设置android:entries来指定数组资源来生成ListView,如果没有指定此属性,则需要通过Adapter来提供列表项。
ArrayAdapter:简单、易用的Adapter,通常用于将数组或List集合的多个值包装成多个列表项。
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1);
this代表引用对象,android.R.layout.simple_expandable_list_item_1代表的是系统自带的列表项
如何自定义列表项:
1、在layout里创建一个xml文件,如果使用ArrayAdapter,则列表项必须是TextView。
2、adapter = new ArrayAdapter<String>(this, R.layout.simple_expandable_list_item_1);改成自己xml的名称
1、创建activity
2、创建xml
3、修改Manifest.xml中的主activity
4、拷贝图片,在工程中drawable专门来放存放可以展示的资源的,注意图片的名称跟变量的命名规则一样,并且不能大写。
5、使用baseadapter来实现,baseadapter是一个抽象类。
baseadapter中getcount返回列表数量,getitem根据位置来取得列表项所关联的数据,getItemId根据位置来取得所指定位置关联的id,getView创建一个视图,只要是要呈现列表项的时候都会来执行。ListView里呈现几个,就执行几次getView。convertView为,不见时对象被操作系统回收,下面有数据时则从回收的对象中创建对象。如果有新的对象表时,操作系统会从对象池中查有没有被系统收回的对象。
优化机制:convertView
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println(">>>>>>>>>>>>>>>>>");
TextView tv = null;
if(convertView!=null){
tv=(TextView) convertView;
}else{
tv = new TextView(CustomListView.this);
}
tv.setTextSize(50);
tv.setText(getItem(position));
return tv;
}
能够呈现图标的列表:
如何根据资源来创建布局:
ll=(LinearLayout) LayoutInflater.from(CustomListView.this).inflate(R.layout.custom_listcell, null);
如何侦听列表相关事件:
lv.setOnItemClickListener(this);
直接一个ListActivity,布局改成他。快速创建列表应用程序的方法。
如果为ListActivity创建布局,则布局文件的id是确定的,为@android:id/list