如何在列表活动实施onItemClickListener
以下是我ListActivity,在同一类中的onCreate代码如何在列表活动实施onItemClickListener
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fakeTripBuilder();
setContentView(R.layout.cutom_list_view);
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.custom_row_view,
new String[] {"stop","distance","time","icon","mode"},
new int[] {R.id.text_stop,R.id.text_distance, R.id.text_time, R.id.icon, R.id.text_mode});
populateList();
setListAdapter(adapter);
}
我有以下方法
@Override
protected void onListItemClick(ListView l, View v, int position, long id){
super.onListItemClick(l, v, position, id);
Log.d("Travel","You choosed!");
Object o = this.getListAdapter().getItem(position);
Toast.makeText(this, "You Choosed"+o.toString(), Toast.LENGTH_LONG).show();
}
这里是“custom_list_view.xml”
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000fff"
android:layout_weight="2"
android:drawSelectorOnTop="false">
</ListView>
<TextView
android:id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFff00"
android:text="No data"
/>
</LinearLayout>
问题是,onListItemClick方法在我点击它时不会调用。帮帮我 !!
要获得在ListActivity到ListView参考你应该叫:
ListView lv = getListView();
你并不需要设置一个点击监听器,它已经有一个。只需覆盖:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Object item = lv.getAdapter().getItem(position);
}
而且在XML文件中,ListView中应该有ID:
android:id="@android:id/list"
编辑
您需要删除
android:clickable="false"
从
布局允许任何儿童意见被点击
ListView lv =(ListView)findViewById(R.layout.cutom_list_view);
您应该使用R.id.listview_id相反,应该在R.layout.cutom_list_view
定义,像这样:
<ListView
android:id="@+id/listview_id"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
编辑:
R.layout。 cutom_list_view是你的布局文件的id,但是你应该通过自己的id找到listview,像android:id =“@ + id/listview_id”,所以id将会是R.id.listview_id
如果要捕获列表中的单击事件,请尝试重写onListItemClick方法。
自2012年询问此问题以来,发生了很大变化。这是一个更新到接受的答案
要在ListActivity
使用onItemClickListener
,只是重写onListItemClick(...)
方法是这样的:
public void onListItemClick(ListView listView, View view, int position, long id) {
ListView myListView = getListView();
Object itemClicked = myListView.getAdapter().getItem(position);
Toast.makeText(getApplicationContext(), "Item Clicked: " + item + " \nPosition: " + id,
Toast.LENGTH_SHORT).show();
}
通知的getItem()
方法,而不是getItemAtPosition()
在接受的答案
记住:为此工作,您需要有一个id为list
否则你的应用会崩溃。
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list"
/>
您仍然需要将android:id =“@ android:id/list”作为ListView的id,而不仅仅是列表 – 2015-11-17 13:02:08
您能更具体地了解NullPointerException吗? – 2012-04-24 13:57:29
为什么你设置一个布局,并将其设置在setContentView和列表视图 – krisDrOid 2012-04-24 14:00:04
你得到空指针,因为你没有设置列表视图布局findViewByID listView – krisDrOid 2012-04-24 14:01:12