Android setOnItemClickListener

时间:2011-04-19 09:49:39

标签: android android-listview

我无法启动“ OnItemClickListener ”。

您可以看到我的代码段

 ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main, new String[] { "title"}, new int[] { R.id.item_title});
    setListAdapter(adapter);

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            @SuppressWarnings("unchecked")
            HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);                   
            Toast.makeText(TopNewsActivity.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_LONG).show(); 

        }
    });

在setListAdapter后,我的调试器进入“ lv.setOnItemClickListener ”,但是没有进入循环并移出。

我想点击链接Clickable善意帮助。

3 个答案:

答案 0 :(得分:8)

最可能的原因是您的ListView项目包含可聚焦或可点击的视图。如果视图包含可聚焦或可单击的项,则不会调用OnItemCLickListener。 (相反,将调用可点击的View自己的点击处理程序。)

点击此处获取更多信息。 请参阅我之前的回答here或查找更多信息here

使用非常简单的ListItem布局尝试它 - 它应该可以工作。

答案 1 :(得分:6)

也许你忘了在public void onItemClick之前写@Override?

Adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
        }
});

答案 2 :(得分:0)

bbalazs是对的。我想更准确地说:如果你有一个视图A作为视图的孩子B和A默认是可点击的(按钮f.e.),那么setOnItemClickListener将无法在B上工作。 这是纯粹的魔法,但它的确如此。