要做一个稍复杂的列表,类似于微博客户端的那种显示微博的列表,经过查阅,发现可以使用ListView来做。
首先,使用xml来进行布局,先新建一个xml布局文件
<?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<!-- 图片 -->
<ImageView
android:id="@+id/img"
android:layout_width="135dp"
android:layout_height="100dp"
android:layout_weight="1"
android:contentDescription="@string/notImg" />
<LinearLayout
android:layout_width="135dp"
android:layout_height="100dp"
android:layout_weight="2"
android:orientation="vertical" >
<TextView
android:id="@+id/txtTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />
<RatingBar
android:id="@+id/star"
style="@android:style/Widget.DeviceDefault.RatingBar.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="5"
android:numStars="5"
android:progress="50" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
然后创建SimpleAdapter 对象
SimpleAdapter simp = new SimpleAdapter(
getActivity(),
listItems,
R.layout.card,
new String[]{"header","personName","price"},
new int[]{R.id.img,R.id.txtTitle,R.id.text});
这里有好多行参数
实际上
第一行是最常用的Context context这个参数,用过空间的几乎都见过这个参数。
第二行是填写数据源,也就是这个列表的数据来自于哪里,这是个List<Map<String,Object>> 对象。
大概这种感觉。
第三行是选择布局文件,也就是根据那个布局文件来进行布局。
第四行是取数据源里的哪些值来显示。
第五行是取出来的数据放到那个控件里面,第四行和第五行是相互对应的。
实际上
第一行是最常用的Context context这个参数,用过空间的几乎都见过这个参数。
第二行是填写数据源,也就是这个列表的数据来自于哪里,这是个List<Map<String,Object>> 对象。
for(int i = 0;i<names.length;i++){
Map<String ,Object> listItem = new HashMap<>();
listItem.put("header", imageIds[i]);
listItem.put("personname", names[i]);
listItem.put("price", price[i]);
listItems.add(listItem);
}
第三行是选择布局文件,也就是根据那个布局文件来进行布局。
第四行是取数据源里的哪些值来显示。
第五行是取出来的数据放到那个控件里面,第四行和第五行是相互对应的。