TableRow OnClickListener的getId返回-1 - 什么给出?

时间:2011-09-05 21:33:48

标签: android

我正在以编程方式创建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?

2 个答案:

答案 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"));