Android UI 图:
8 ListView ListActivity SimpleAdapter ArrayAdapter
列表视图是一种可以用来显示长的项列表的视图。在 Android 中,有两种列表视图: ListView 和 SpinnerView,两者都用于显示长的项列表。ListView 在一个垂直滚动列表中显示项列表。
1)使用继承android.app.ListActivity+ArrayAdapter方式
strings.xml
list_item_0
list_item_1
list_item_2
list_item_3
list_item_4
ListViewActivity.java
public class ListViewActivity2 extends ListActivity{
// 在strings.xml文件中创建
private String[] listItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//this.setContentView(R.layout.activity_listview);不需要使用layout
// 获取数据源
listItems = this.getResources().getStringArray(R.array.array_listitem);
// 获取ListView
ListView listView = this.getListView();
// 设置ListView为多选模式
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// ListView 设置适配器,适配器中需要数据源
this.setListAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_checked, listItems));
}
@Override
protected void onListItemClick(ListView listView, View v, int position, long id) {
// ListItem被点击时事件触发
Toast.makeText(this,listItems[position], Toast.LENGTH_SHORT).show();
}
}
2)使用xml+SimpleAdapter 方式
layout.xml
android:id="@+id/list_comp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
listview.xml
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textSize="20sp"
android:id="@+id/title"
/>
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textSize="10sp"
android:layout_below="@+id/title"
android:id="@+id/content"
/>
ListViewActivity
public class ListViewActivity extends Activity{
// 数据源
private ArrayList> listItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 设置布局文件
this.setContentView(R.layout.activity_listview);
// 获取布局文件中设置的ListView
ListView listView = (ListView)findViewById(R.id.list_comp);
// 设置多选模式
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// 创建数据源
listItem = new ArrayList>();
for(int i=0;i<10;i++)
{
HashMap map = new HashMap();
map.put("title", "title_"+i);
map.put("content", "content_"+i);
listItem.add(map);
}
// 创建适配器,第二个参数是数据源, 第三个参数是xml模板、第四个与第5个参数是数据源与xml对应项配置
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,
R.layout.listview,new String[] {"title","content"},
new int[] {R.id.title,R.id.content}
);
// 设置适配器
listView.setAdapter(listItemAdapter);
// 注册点击事件
listView.setOnItemClickListener(new ItemClickImpl());
}
class ItemClickImpl implements OnItemClickListener{
@Override
public void onItemClick(AdapterView> adapter, View arg1, int arg2,
long arg3) {
// ListItem 被点击时事件被触发
Toast.makeText(ListViewActivity.this, listItem.get(arg2).get("title").toString()+listItem.get(arg2).get("content"), Toast.LENGTH_SHORT).show();
}
}
}