这里我使用动态表格布局,但我无法获得单元格位置。我的问题是在android中的动态表格布局中的“如何获得行和列位置”。请帮帮我。
感谢。
for (int i = 1; i <= rows; i++) {
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
// inner for loop
for (int j = 1; j <= cols; j++) {
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
tv.setBackgroundResource(R.drawable.cell_shape);
tv.setPadding(5, 5, 5, 5);
tv.setId(j);
tv.setText("R " + i + ", C" + j);
//mOrangeToolTipView = mToolTipFrameLayout.showToolTipForView(toolTip, tv);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
Log.d("Row and Column position ", v.getTouchables()+"");
}
});
row.addView(tv);
}
table_layout.addView(row);
}
答案 0 :(得分:0)
可能对你来说太迟了,但是......要从哪里获得行和列位置? 从内部for循环的内部,行位置是 i ,列位置是 j 。 外面尝试类似
的东西((TextView)((TableRow)tableLayout.getChildAt(row)).getChildAt(column)).setText("MyText");
如果要为不同的单元格设置不同的OnClickListener,尝试从内部类(新的View.OnClickListener(){...}访问 i 或 j ),我有坏消息,它不可能。但是你在循环中创建每个单元格,所以你可以像
那样创建它...
if (i == 1 && j == 1){
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do what cell (1,1) have to do
}
});
} else {
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do what other cells have to do
}
});
}
...
我希望它会帮助你或其他人;)
答案 1 :(得分:0)
陷入同样的问题......找到了一个对我有用的解决方案,但是...... 并非适用于所有情况。
更改了这一行:tv.setId(j);
收件人:tv.setId((i*100)+j);
它的工作原理:
获取行索引:row_index = id/100;
获取列索引:column_index = id%100;
注意:它的工作原理给i和j是2位数。(猜猜是在tablelayout中找到textview的索引,它将在99以内,最大值)