14. Listview显示
官方提供了多种ListItem的Layout (R.layout),以下是较为常用的,更多的请查看API DOC的R.layout http://androidappdocs.appspot.com/reference/android/R.layout.html:
◾android.R.layout.simple_list_item_1 一行text
◾android.R.layout.simple_list_item_2 一行title,一行text
◾android.R.layout.simple_list_item_single_choice 单选按钮
◾android.R.layout.simple_list_item_multiple_choice 多选按钮
◾android.R.layout.simple_list_item_checked checkbox
ListView学习,在app上显示新闻列表(静态资源),目标如下:
1.android.R.layout.simple_list_item_1使用ArrayAdapter数组适配器,显示一行数据(新闻标题)
1)为读取资源中数据准备存放的数组
private String[] titles = null;
2)读取数据
titles = getResources().getStringArray(R.array.title);
3)使用适配器给listview传递数据
//使用数组适配器ArrayAdapter绑定titles字符串数组作为Listview空间的数据源
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1,titles
);
ListView lvNewList = findViewById(R.id.iv_new_list);
lvNewList.setAdapter(adapter);
显示如下
2.android.R.layout.simple_list_item_2使用SimpleAdapter显示两行数据(标题加作者)
ArrayAdapter 作为 ListView 的适配器使⽤时,只能⽤于 Item 中包含1 个 TextView 的情况。如果要在列表中显⽰新闻的标题及作者,则需要使⽤ SimpleAdapter 作为适配器。
1)在MainActivity中添加如下代码: 构造数据源的 List 对象。使⽤ List<Map<String, String> > dataList; 替换掉之前定义的 titles、authors 数组。
private String[] titles = null;
private String[] authors = null;
private List<Map<String,String>> datalist = new ArrayList<>();//在列表list中方一个map
private static final String NEW_TITLES = "news titles";
private static final String NEW_AUTHORS = "news authors";
int length;
titles = getResources().getStringArray(R.array.title);
authors = getResources().getStringArray(R.array.authors);
if(titles.length>authors.length){
length =authors.length;
}else {
length = titles.length;
}
for(int i =0;i<length;i++){
Map map = new HashMap();
map.put(NEW_TITLES,titles[i]);
map.put(NEW_AUTHORS,authors[i]);
datalist.add(map);
}
3)构造 SimpleAdapter 适配器。
SimpleAdapter 对象所需的 context 上下⽂参数、数据源对象均已经构造好。Item 布局则使⽤系统预定义的android.R.layout.simple_list_item_2资源,该资源包含两个 TextView 控件标签,具体可在 Android Studio 中查看。
SimpleAdapter adapter = new SimpleAdapter(
MainActivity.this,datalist, android.R.layout.simple_list_item_2,
new String[]{
NEW_TITLES,NEW_AUTHORS