最近做一个black ant的温控系统项目,里面有很多列表项,但是用的时候,感觉封装的已经挺好的了,自己拿过来改改代码就行了,所以用过之后也没什么感觉。现在趁着闲暇时间整理下简单的ListView,体会下这个东西到底是怎么个原理。
首先看下实现效果:
其中,每一条列表项加的是一个Image跟一个TextView,数据源绑定在了TextView上面。
首先,添加两个layout文件:
列表(item)的布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="lhc" /></LinearLayout>
接着是整个Activity的布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
接着是Activity的代码:
public class ListDemo extends Activity{ private String[] names;//模拟数据源 private ArrayList<HashMap<String,String>> listItem;//需求的数据结构 private ListView mListView;//列表对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview_activity); initCtrl();//初始化组件 mListView.setOnItemClickListener((OnItemClickListener)new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(getBaseContext(), "您选择了 :"+names[arg2], Toast.LENGTH_LONG).show(); } }); } /*初始化组件*/ private void initCtrl() { mListView=(ListView)findViewById(R.id.lv);//获得listView对象 listItem=loadData();//加载数据 SimpleAdapter listItemAdapter=new SimpleAdapter(getBaseContext(),/*指明了SimpleAdapter关联的View的运行环境,也就是当前的Activity*/ listItem,/*由Map组成的List,在List中的每条目对应ListView的一行,每一个Map中包含的就是所有在from参数中指定的key*/ R.layout.listview_item,/*定义列表项的布局文件的资源ID,该资源文件至少应该包含在to参数中定义的ID*/ new String[]{"ItemName"},/*将被添加到Map映射上的Key*/ new int[] {R.id.name}/*将绑定数据的视图的Id跟from参数对应,这些被绑定的视图元素应该全是TextView*/ ); //设置适配器 mListView.setAdapter(listItemAdapter); } /*模拟获取数据源过程*/ private ArrayList<HashMap<String, String>> loadData() { names=new String[]{"can","pppbc","pbc","lhc","can","小火山"}; listItem=new ArrayList<HashMap<String,String>>(); //遍历数组 for(int i=0;i<names.length;i++){ HashMap<String,String> map=new HashMap<String,String>(); String name=names[i]; map.put("ItemName", name);//以键值对的形式保存 listItem.add(map);//将HashMap添加到list中 } return listItem; }}
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 1楼u010191034昨天 20:57
- 不错不错,不明觉厉——chenchen