一直忘了贴出来,又要从头看一遍,感觉这个比较有用哦。
前几天一直在做一个最短路径的JAVA桌面程序(拯救007),学到很多,Android和JAVA不分家嘛~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、选定主Activity
<activity android:name=".ActivityMain"
android:label="Android中的列表演示">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
(从intent-filter中定义了里面的动作和分类)二、单击第一个按钮,进入Activity1
Activity1.java中创建页面的代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = new ListView(this);
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, data));
listView.setItemsCanFocus(true);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
setContentView(listView);
}
1、新建一个listView(列表)
2、setAdapter()让ListView和ArrayAdapter进行绑定
3、ListAdapter是列表适配器,是data和ListView的桥梁,起适配作用。ArrayAdapter、SimpleAdapter都是ListAdapter的子类,
4、ArrayAdapter:第一个参数是Context,上下文的引用;第二个参数是列表的布局(可以是系统的R文件,也可以是用户自己的创建的R文件);第三个参数是data,可以是字符串数组、Cursor。
5、系统提供的列表布局方式:
(1)Android.R.layout.simple_list_item_1,列表中每一项只有一个TextView。
(2)Android.R.layout.simple_list_item_2,列表中每一项有两个TextView。
(3)Android.R.layout.simple_list_item_single_choice,列表中每一项有一个TextView,且可以被选择。
如图所示:
三、用户可定制性列表适配器-----SimpleAdapter
private void PrepareData() {
data = new ArrayList<Map<String, Object>>();
Map<String, Object> item;
item = new HashMap<String, Object>();
item.put("姓名", "张三小朋友");
item.put("性别", "男");
data.add(item);
item = new HashMap<String, Object>();
item.put("姓名", "王五同学");
item.put("性别", "男");
data.add(item);
item = new HashMap<String, Object>();
item.put("姓名", "小李师傅");
item.put("性别", "女");
data.add(item);
}
(2)自定义的layout:(3)将列表适配器加入到列表中:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PrepareData();
setContentView(R.layout.list3);
SimpleAdapter adapter = new SimpleAdapter(this, data,
android.R.layout.simple_list_item_2, new String[] { "姓名","性别" },
new int[] { android.R.id.text1 , android.R.id.text2});
setListAdapter(adapter);
}
四、事件
OnItemClickListener listener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
setTitle(parent.getItemAtPosition(position).toString());
}
};
listView.setOnItemClickListener(listener);
OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
setTitle("您选中的软件是: "+parent.getItemAtPosition(position).toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
setTitle("");
}
};
listView.setOnItemSelectedListener(itemSelectedListener);
结果如图所示:
五、ListActivity的使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="<span style="font-family: Arial, Helvetica, sans-serif;">@id/android:list</span>"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@id/android:em<span style="font-family: Arial, Helvetica, sans-serif;">pty"</span>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="对不起,没有数据显示"/>
</LinearLayout>
这个布局文件中必须定义一个ListView,且id必须为:@id/android:list。在ListActivity中不用注册监听器,而是直接重写onListItemClick方法就可以进行事件处理。
将String data={ },结果如下: