【问题标题】:TableLayout onClickListener : get Row/ColumnTableLayout onClickListener:获取行/列
【发布时间】:2023-04-02 05:16:01
【问题描述】:

我选择使用 TableLayout 来绘制产品类别。

动态获取和呈现数据。我将 TableRow 和 ImageView 都添加到其中。

当每个 TableRow 有 3 个项目时,我该如何处理 onClickListener

我无法更改使用的布局,所以我正在寻找当前情况的解决方案

【问题讨论】:

  • 如何将数据加载到此表中?为什么你不能改变使用的布局?在行中的项目上将“duplicateParentState”设置为 true,并在行中设置 onClickListener。
  • @Jordi 我以编程方式加载它。出于组织原因,无法更改布局。你最后一句话对我来说没有意义,你能提供它作为答案吗?谢谢
  • @MarekSebera:你想检测 tablerow 元素或 tablerow 本身的点击??
  • @android_hungry 在 tablerow 中的项目上

标签: java android tablelayout


【解决方案1】:

好的,当您创建动态行时,使用 for 循环: 这样做:

  1. 使用增量变量对表格行的每个子元素使用setTag()setTag(key, tag)

  2. for 循环本身内每个子元素的 setonclick 侦听器 [注意:for 循环内]

  3. 在 onclicklisteners 的onclick(View v) 中,您可以通过使用v.getTag() [将标签转换为所需的数据类型]

  4. 通过检索点击的视图来检测单个点击

【讨论】:

    【解决方案2】:

    您的膨胀布局在 XML 中必须看起来像这样:

    <TableRow android:id="@+id/somerow">
        <TextView android:id="@+id/row_item1" android:duplicateParentState="true" .... />
        <TextView android:id="@+id/row1_item2" android:duplicateParentState="true" .... />
        <TextView android:id="@+id/row1_item3" android:duplicateParentState="true" .... />
    </TableRow>
    

    所以在java代码中,你应该在给行充气后直接做这样的事情:

    // there is some var tableRow of type TableRow
    TextView myTextView = new TextView(......);
    myTextView.setOnClickListener(myOnClickListener); // this is the important part
    myTableRow.addView(myTextView);
    

    【讨论】:

    • 我如何使用duplicateParentState 属性处理点击row1_item1/2/3
    • 我想我把你的问题弄错了。我以为您在问如何在所有 3 个项目上管理 1 个 clickListener。如果你想单独有一个clickListener:tableRow.findViewById(R.id.row_item1).setOnClickListener(myOnClickListener1);或者如果您动态地制作 TextView,请直接添加 onClickListener
    • 所以你建议将匿名 onclicklistener 添加到我想要处理点击的每个视图中?
    • 不,我不建议这样做。我更喜欢将我的 onClickListeners 定义为内部类,以使代码更干净。有时,您可能希望在多个视图上使用 clickListener,这可以通过声明它们的名称来实现。这是个人的事情,您可以按照自己的方式添加它们。
    • 好的,您能否修改您的答案以符合我的问题,以便我接受?
    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多