【问题标题】:(Android) Listview onItemClicked not triggering(Android) Listview onItemClicked 未触发
【发布时间】:2011-05-17 16:02:55
【问题描述】:

我正在开发一个杂货清单应用程序来学习 android,但我似乎无法弄清楚如何让 ListView 中的项目触发我在 listview 上设置的 ItemClickListener 中的 onClick 事件。从 onResume() 方法调用 renderList() 方法,该方法从数据库中获取杂货列表并填充 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();
    }   

};

【问题讨论】:

    标签: android view listener adapter


    【解决方案1】:

    我的猜测是您的列表行中有可聚焦的项目。我会考虑将 this 设置为 false 或在您的项目绑定中,只需将它们的 xml 属性设置为 android:focusable="false"

    【讨论】:

    • 技术上我认为你是对的,我必须切换到 textView 才能让它工作。我用 textView 和未选中复选框的图像制作了一个线性布局,当它被点击时,我会将图像更改为选中的复选框。
    • 如果你使用 会发生什么?
    • 我最终使用自定义 CursorAdapter 类来填充 listView
    【解决方案2】:

    您可能想使用ListActivity,然后简单地覆盖onListItemClick 方法。另一个问题可能是您在列表视图中放置的内容。请参阅ListView with clickable/editable widget 以获取概述,但如果列表视图中有任何可聚焦的项目,您将很难让它正确记录点击。

    【讨论】:

    • 如果我使用列表活动,如何添加和标题 - 并在滚动期间将其固定在顶部?
    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多