我创建了自己的复合控件,使用TableLayout显示数据网格,并在循环中添加Tablerows,取决于我绑定到它的Object数组,现在我想选择一个特定的行及其特定数据,以便由方法使用。那么如何选择检索其数据的特定行来委托方法呢?
答案 0 :(得分:9)
嗨,你可以尝试这样的事情,
// create a new TableRow
TableRow row = new TableRow(this);
row.setClickable(true); //allows you to select a specific row
row.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
v.setBackgroundColor(Color.GRAY);
System.out.println("Row clicked: " + v.getId());
//get the data you need
TableRow tablerow = (TableRow)v.getParent();
TextView sample = (TextView) tablerow.getChildAt(2);
String result=sample.getText().toString();
}
});
有关详细信息,请参阅Android TableRow
答案 1 :(得分:7)
我尝试了Parth Doshi的答案,发现它不太正确。 view
中的onClick
参数是TableRow
,因此当调用v.getParent()
时,它会返回TableLayout
个对象,因此在投射时会抛出异常到TableRow
。因此,适合我的代码是:
tableRow.setClickable(true); //allows you to select a specific row
tableRow.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
TableRow tablerow = (TableRow) view;
TextView sample = (TextView) tablerow.getChildAt(1);
String result=sample.getText().toString();
Toast toast = Toast.makeText(myActivity, result, Toast.LENGTH_LONG);
toast.show();
}
});