我正在创建一个包含一个表的活动。选择行时,我想通过上下文菜单选项更新或删除行。 该表在TableLayout视图中。每一行都作为TableRow视图添加到TableLayout中,并且对于每个TableRow,我使用registerForContextMenu(tr)将其注册为上下文菜单;
选择行时会显示上下文菜单选项,但问题是我需要所选行的编号。我认为这可以通过onContextItemSelected(MenuItem item)方法中的以下源代码实现:?
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int selectedRow = (int) info.id;
但AdapterContextMenuInfo始终为null。
我可以通过其他方法实现表格行吗?
答案 0 :(得分:1)
仍然在寻找答案,看看是否有更好的方法,但是当你创建表格行时,你可以设置一个标签然后检索它
我使用onClickListener:
private void AddRow(String rowNo)
{
final TableLayout table = (TableLayout) findViewById(R.id.my_table);
final TableRow tr = (TableRow) getLayoutInflater().inflate(R.layout.table_row_item, null);
tr.setTag(rowNo);
TextView tv;
tv = (TextView) tr.findViewById(R.id.rowNo);
tv.setText(rowNo);
table.addView(tr);
tr.setOnClickListener(mClickListener);
}
然后在OnClickListener中:
private OnClickListener mClickListener = new OnClickListener()
{
public void onClick(View v)
{
try
{
String clickedRow = (String) v.getTag();
Toast toast = Toast.makeText(mContext, clickedRow, Toast.LENGTH_SHORT);
toast.show();
}
catch (Exception ex)
{
Toast toast = Toast.makeText(mContext, ex.toString(), Toast.LENGTH_SHORT);
toast.show();
}
}
};
除非我能找到另一种解决方案,否则我将对ContextMenu使用相同的想法
- public boolean onContextItemSelected(MenuItem item)
没有视图参数,但
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
确实
所以我猜我会使用类级别变量将当前行存储在onCreateContextMenu事件中并在onContextItemSelected中检索它