Это грязно, но работает.
Создайте глобальную частную переменную в вашем классе Activity
называется TableRow tr1=null;
тогда вы можете использовать следующий код в вашем addData()
методе
до registerForContextMenu(tr);
звоните:
tr.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
view.setBackgroundColor(Color.DKGRAY);
}
});
tr.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
tr1=(TableRow)v; //assign selected TableRow gobally
openContextMenu(v);
return true;
}
});
Затем используйте следующее в том же упражнении, чтобы оно работало с контекстными меню, насколько я понял из вашего кода:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, v.getId(), 0, "Do YourStuff");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
int ccount= (tr1).getChildCount();
String[] str =new String[ccount];
for(int i=0;i<ccount;i++)
{
TextView tv = (TextView)(((TableRow)tr1)).getChildAt(i);
str[i]=tv.getText().toString(); //set selected text data into the String array
}
Toast.makeText(ListActivity2.this,Arrays.toString(str), 2).show();
return true;
}
так что в основном переменная tr1 будет содержать выбранную вами TableRow.
Но сделайте, как все говорят, используйте ListView для таких задач, как эта, и просто используйте RelativeLayouts для строк или чего-либо еще.
надеюсь, это прояснит это.