(Android)Listview onItemClicked没有触发

时间:2011-05-17 16:02:56

标签: android view listener adapter

我正在开发一个杂货列表应用程序来学习android,但我似乎无法弄清楚如何获取ListView中的项目来触发我在listview上设置的ItemClickListener中的onClick事件。方法renderList()从onResume()方法调用,该方法从数据库中获取杂货列表并填充ListView。为什么这种实施不起作用;点击list_item后,toast没有显示?

list_item是CheckBox视图。

@Override
protected void onResume() {
  super.onResume();
  renderList();
}

protected void renderList(){

    try {
        dbHelper = new DbHelper(getApplicationContext());
        db = dbHelper.getReadableDatabase();
        cursor = db.query(DbHelper.TABLE, null, null, null, null, null, DbHelper.C_ID + " DESC");
        startManagingCursor(cursor);
        adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, FROM, TO);

        groceriesList = (ListView)findViewById(R.id.listView1);
        groceriesList.setAdapter(adapter);
        groceriesList.setOnItemClickListener(clickListen);


     } catch (Exception e) {
         Log.d(TAG, "RenderList Error: ",e);
     }
}

private OnItemClickListener clickListen = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), "pos: "+position, Toast.LENGTH_SHORT).show();
    }   

};

2 个答案:

答案 0 :(得分:3)

我的猜测是你的列表行中的项目是可聚焦的。我会考虑将this设置为false或绑定项目,只需将其xml属性设置为android:focusable =“false”

答案 1 :(得分:1)

您可能希望使用ListActivity,然后只需覆盖onListItemClick方法。另一个问题可能是您在列表视图中添加的内容。有关概述,请参阅ListView with clickable/editable widget,但如果您在列表视图中有任何可关注项目,则无法正确注册点击次数。