【问题标题】:Android. ListView. Click on child item in View of ListView disables parent OnClickListener安卓。列表显示。单击 ListView 视图中的子项会禁用父 OnClickListener
【发布时间】:2018-09-17 11:49:33
【问题描述】:

好的,现在更详细的描述。

我有带有适配器的ListView 元素(扩展BaseAdapter)。 我在ListView 中有 10 多个视图元素。 Adater 按预期工作,onItemClickListener 工作也很好。

但是当我在getView 函数中的适配器内部为ListView 创建视图元素时,我将在那里添加TextView 并为此元素设置onClickListener

使用 Toast 消息进行测试显示 TextView onClickListener 正在工作。但是ListView 的父监听器不再存在。

有什么问题?我理解整个概念,但是如何让android在TextView之后不要停止处理点击事件,并且还要处理ListView点击事件。

我试过了

  1. view.performClick();
  2. view.callOnClick();
  3. view.getRootView.performClick();
  4. view.getRootView.callOnClick();

没有运气

【问题讨论】:

    标签: android listview adapter onclicklistener


    【解决方案1】:

    我认为您将单击侦听器与整个项目的视图组绑定,这不是正确的方法。您需要调用 addView(textview) 然后您只能启动 textview 点击监听器。另外,如果您是新手,请改用 recyclerview。

    【讨论】:

    • 我正在使用 recyclerview。我只是不指出这一点,因为我认为这并不重要。
      我还将 ClickListenere 添加到元素,而不是所有视图,如下所示:
      TextView cell = view.findViewById(mCtx.getResources().getIdentifier("fragment_item_num" + i, "id", mCtx.getPackageName()));
      并添加ClickListener to this
    【解决方案2】:

    问题解决了。 尝试调用
    view.performClick(); 是错误的
    正确答案是
    假设我们在适配器中
    ((ListView)parent).performItemClick(view, position, position)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多