0

我正在创建一个包含一个表的活动。选择一行时,我想通过上下文菜单选项更新或删除该行。该表位于 TableLayout 视图中。每行都作为 TableRow 视图添加到 TableLayout 中,并且对于每个 TableRow,我都使用 registerForContextMenu(tr); 将其注册为上下文菜单;

选择行时会显示上下文菜单选项,但问题是我需要所选行的编号。我认为这可以通过 onContextItemSelected(MenuItem item) 方法中的以下源代码来实现:

   AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();  
   int selectedRow = (int) info.id;  

但 AdapterContextMenuInfo 始终为空。

我可以通过其他方法实现表格行吗?

4

1 回答 1

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 中检索它

于 2012-08-23T09:00:11.173 回答