【问题标题】:Android setOnItemClickListenerAndroid setOnItemClickListener
【发布时间】:2011-08-08 13:01:10
【问题描述】:

我无法启动“OnItemClickListener”。

你可以看到我的代码sn-p

 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”,但没有进入循环并移出。

我想让链接可点击,请帮忙。

【问题讨论】:

  • 我没有看到循环
  • 我只是想知道你所说的“进入循环”是什么意思?
  • @LBNerdBard :抱歉,循环是指函数。该功能被跳过

标签: android android-listview


【解决方案1】:

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

点击这里了解更多信息。 查看我之前的回答here 或查找更多信息here

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这不可能是原因,不管有没有@Override注解,方法都会被覆盖。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多