实现后的效果如下:请忽略铃声音量。。。
其实都好简单,首先建一个包含ListView的布局activity_main:如下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.listviewtest.MainActivity" >
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</RelativeLayout>
然后再建一个布局,通过这个布局设置ListView中每一项的内容。比如说我这里有一个ImageView,一个显示标题的TextView,和一个显示日期的TextView。我给这个布局取名叫item_layout,如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/title_textview"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="5dp"
android:text="标题样式"
android:textSize="18sp"
android:layout_toRightOf="@id/image_view"/>
<TextView
android:id="@+id/data_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2015-06-23 12:35"
android:textSize="12sp"
android:layout_toRightOf="@id/image_view"
android:layout_alignBottom="@id/image_view"/>
</RelativeLayout>
然后就是java部分了,也很简单:
<pre name="code" class="java">public class MainActivity extends Activity {
private ListView myListView;
private SimpleAdapter simAdapter;
private List<Map<String,Object>> item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myListView=(ListView) findViewById(R.id.list_view);\\获得ListView实例
simAdapter=new SimpleAdapter(this, initialData(), R.layout.item_layout, new String[] {"image","title","date"}, new int[]{R.id.image_view,R.id.title_textview,R.id.data_time}); \\创建SimpleAdapter
myListView.setAdapter(simAdapter); \\把simpleAdapter配置到ListView
}
//初始化simpleAdapter每一项的数据,我这里只是随意地设置了一下
public List<Map<String, Object>> initialData(){
item=new ArrayList<Map<String,Object>>();
for(int i=0;i<20;i++){
Map<String, Object> map=new HashMap<String, Object>();
map.put("image", R.drawable.ic_launcher);
map.put("title", "标题yangshi"+i);
map.put("date", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
item.add(map);
}
return item;
}
}
SimpleAdapter的构造函数解释如下:
public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
参数:
- context SimpleAdapter关联的View的运行环境
- data 一个Map组成的List。在列表中的每个条目对应列表中的一行,每一个map中应该包含所有在from参数中指定的键
- resource 一个定义列表项的布局文件的资源ID。布局文件将至少应包含那些在to中定义了的ID
- from 一个将被添加到Map映射上的键名
- to 将绑定数据的视图的ID,跟from参数对应,这些应该全是TextView