我选择使用TableLayout来绘制产品类别。
动态获取和呈现数据。我正在将TableRow和ImageView添加到其中。
如果每个TableRow有3个项目,我该如何处理onClickListener
?
我无法更改已使用的布局,因此我正在寻找当前情况下的解决方案
答案 0 :(得分:5)
好的,当你使用for循环创建动态行时: 这样做:
使用增量变量对表格行的每个子元素使用setTag()
或setTag(key, tag)
setonclick for循环内部每个子元素的侦听器[注意:for循环中的 ]
在onclicklisteners的onclick(View v)
中,您可以通过使用v.getTag()
[将代码转换为所需数据类型]
答案 1 :(得分:0)
你的膨胀布局必须在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);