我正在以编程方式创建tablerows,我正在尝试实现OnClickListener:
final TableRow tr = new TableRow(this);
tr.setId(tourney.getColumnIndex("_id"));
tr.setClickable(true);
tr.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
v.setBackgroundColor(Color.GRAY);
System.out.println("Row clicked: " + v.getId());
}
});
但每次点击该行时,我得到的值为-1。为什么我没有得到我设置的ID?
答案 0 :(得分:0)
你的TableRow对象符合OOP标准,它应该只知道它自己的状态,而不是它在另一个对象中的位置。相反,您应该获取对TableLayout的引用,然后在其上调用indexOfChild(View child)
:
TableLayout tblLayout = (TableLayout) findViewById(R.id.yourTableLayout);
int tableRowIndex = tblLayout.indexOfChild(tr);
答案 1 :(得分:0)
我在getId上得到-1的原因是因为这行:
tr.setId(tourney.getColumnIndex("_id"));
“_ id”不是查询的一部分,所以我没有得到列索引。即便如此,这不是我真正想要的价值,但这解决了我的问题:
tr.setId(tourney.getInt(tourney.getColumnIndex("_id"));