Android 如何在TableLayout中单击特定的TableRow
我创建了自己的复合控件,该控件使用TableLayout显示数据网格,并根据绑定到它的对象数组以编程方式在循环中添加Tablerows,现在我想选择一个具有特定数据的特定行,以便方法使用。那么,我如何选择检索其数据的特定行来委托方法呢 嗨,你可以试试这样的东西Android 如何在TableLayout中单击特定的TableRow,android,xamarin.android,tablelayout,tablerow,Android,Xamarin.android,Tablelayout,Tablerow,我创建了自己的复合控件,该控件使用TableLayout显示数据网格,并根据绑定到它的对象数组以编程方式在循环中添加Tablerows,现在我想选择一个具有特定数据的特定行,以便方法使用。那么,我如何选择检索其数据的特定行来委托方法呢 嗨,你可以试试这样的东西 // create a new TableRow TableRow row = new TableRow(this); row.setClickable(true); //allows you to select a
// 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();
}
});
欲了解更多信息,请参考我尝试了Parth Doshi的答案,发现不太正确。
onClick
中的view
参数是一个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();
}
});
我也有同样的问题,但我想在TableRow上使用onItemClickListener,因为我想知道按下了哪个列。无法找到将TableRow转换为支持McClick的东西的方法。有什么解决办法吗?谢谢!这肯定比答案中标注的更好