您的位置:首页 > 其它

ListActivity

2016-02-21 23:00 246 查看
1.ListActivity:

封装了一个ListView和一个TextView(没有数据时提示)
注意:他们的id必须设置为   @android:id/id名   系统的id
ListView对应的id名为list
TextView对应的暂无数据名为empty
不用写ListView的布局文件


2.ListActivity的使用:

(1)如果用自己的setContentView()在XML中声明ListView(注意id)
<!-- @android:id/empty系统的id -->

<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="暂无数据" />

(2)写一个类继承ListActivity
(3)给ListView设置适配器,直接调用setListAdapter(不用setContentView)
setListAdapter(adapter);
(4)设置ListView的item的点击事件:

方式一:获得当前的ListView ---> getListView()
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
/**
* 第一个参数:item的父控件(也就是ListView)
* 第二个参数:点中的item的布局
* 第三个参数:点中的item的位置(下标从0开始)
* 第四个参数:点中item的id
* */
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub

}
});

方式二:直接重写onListItemClick()方法;
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
//必须写的
super.onListItemClick(l, v, position, id);
//获得的两种方式
Map map = (Map) adapter.getItem(position);
Map mapInList = (Map) l.getItemAtPosition(position);

String str = (String)map.get("textView1")+"       "+(String)map.get("textView2");
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}


Demo:

private void initView() {
adapter = new MyAdapter(this, list);
// 直接调用setListAdapter
setListAdapter(adapter);
}

/**
* getListView---》获得当前的ListView
* item的点击事件
*/
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

super.onListItemClick(l, v, position, id);
//获得
Map map = (Map) adapter.getItem(position);
Map mapInList = (Map) l.getItemAtPosition(position);
String str = (String)map.get("textView1")+"       "+(String)map.get("textView2");
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}


3.上下文对象可以用Content

获得系统服务:context.getSystemServeice();

在BaseAdapter中:
private Content content;
private LayoutInflater inflater;
// getSystemService获得系统的服务(获得的服务,可以是蓝牙,wifi)
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: