ListView使用浅析
来源:互联网 发布:linux安装tomcat9 编辑:程序博客网 时间:2024/05/17 15:18
使用listview时候,需要书写以下几个地方:
1:新建一个l包含istview控件的layout
2:新建一个itemlayout(其中包含listview中item的格式:image+text)
3:新建一个Adapter extends BaseAdapter,这个adapter需要有构造函数(初始化mdata,LayoutInflater),并且重写getCount(),getItem(),getItemId()
,getView()这4个方法。
还可以新建内部类:ViewHolder(只需将item控件作为变量即可),优化listview的视图缓存模式。
4:在主类中实例化listview和adapter,使用mylistview.setAdapter(myadapter),绑定listview和adapter,实现数据显示。
以下我们使用我们的实例来实现各个步骤:
1:新建一个l包含istview控件的layout
- <ListView
- android:id="@+id/list"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"></ListView>
2:新建一个itemlayout(其中包含listview中item的格式:image+text)
- <ImageView
- android:id="@+id/image"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
3:新建一个Adapter extends BaseAdapter,这个adapter需要有构造函数(初始化mdata,LayoutInflater),并且重写getCount(),getItem(),getView()三个方法。
还可以新建内部类:ViewHolder(只需将item控件作为变量即可),优化listview的视图缓存模式。(类代码来自《Android群英传》)
- public class MyAdspter extends BaseAdapter {
- private List<Map<String, Object>> data;
- private LayoutInflater layoutInflater;
- private Context context;
- public MyAdspter(Context context,List<Map<String, Object>> data){
- this.context=context;
- this.data=data;
- this.layoutInflater=LayoutInflater.from(context);
- }
- /**
- * 组件集合,对应list.xml中的控件
- * @author Administrator
- */
- public final class Zujian{
- public ImageView image;
- public TextView title;
- }
- @Override
- public int getCount() {
- return data.size();
- }
- /**
- * 获得某一位置的数据
- */
- @Override
- public Object getItem(int position) {
- return data.get(position);
- }
- /**
- * 获得唯一标识
- */
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder holder=null;
- if(convertView==null){
- holder=new ViewHolder ();
- //获得组件,实例化组件
- convertView=layoutInflater.inflate(R.layout.list, null);
- holder.image=(ImageView)convertView.findViewById(R.id.image);
- holder.title=(TextView)convertView.findViewById(R.id.title);
- convertView.setTag(holder);
- }else{
- holder=(ViewHolder)convertView.getTag();
- }
- //绑定数据
- holder.image.setBackgroundResource((Integer)data.get(position).get("image"));
- holder.title.setText((String)data.get(position).get("title"));
- return convertView;
- }
- public final class ViewHolder{
- public ImageView Img;
- public TextView title;
- }
- }
4:在主类中实例化listview和adapter,使用mylistview.setAdapter(myadapter),绑定listview和adapter,实现数据显示。
(这里需要注意的是:因为我们的listview的item是个复杂的数据类型,我们使用的是一个item对应一个map,map中保存了value为image或者title,key为对应的image和text的内容,所有的map组成一个List,并且listview中的adapter初始化为接受(Context,list),这里的list就是我们的显示内容)
- public class MainActivity extends Activity {
- private ListView listView=null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listView=(ListView)findViewById(R.id.list);
- List<Map<String, Object>> list=getData();
- listView.setAdapter(new MyAdspter(this, list));
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- public List<Map<String, Object>> getData(){
- List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
- for (int i = 0; i < 10; i++) {
- Map<String, Object> map=new HashMap<String, Object>();
- map.put("image", R.drawable.ic_launcher);
- map.put("title", "这是一个标题"+i);
- list.add(map);
- }
- return list;
- }
- }
到此,我们的listview就算是做好了。
- ListView使用浅析
- ListView 浅析
- ListView浅析 笔记
- 浅析ListView用法
- Android ListView和Adapter浅析
- Android ListView观察者模式浅析
- ListView 缓存机制源码浅析
- ListView使用
- ListView 使用
- listview使用
- ListView 使用
- ListView使用
- 使用ListView
- ListView使用
- ListView使用
- Android中ListView原理与优化 浅析
- registerDataSetObserver:浅析Andorid ListView和Adapter
- 浅析:ListView的动态刷新问题
- 欢迎使用CSDN-markdown编辑器
- 免费网站源码 织梦模板下载
- 斯坦福机器学习笔记九
- 有了云,唐僧都不去取经了
- C# CRC16 和汉明重量
- ListView使用浅析
- EasyUI 入门教材1:如何引入EasyUI
- 数据库(关系型)设计三范式
- Java中抽象类和接口的区别
- .net framework4与其client profile版本的区别
- 自己整理的Linux常用命令及参数含义
- MySQL隔离级别
- nested exception is javax.persistence.RollbackException: Error while commiting the transaction
- 面向对象-多态