getItemId返回列表中的第一个textview id而不是单击的

时间:2012-10-09 07:34:10

标签: android textview contextmenu

我有一个动态创建的TextView列表,我正在为其创建上下文菜单。但是,我的代码返回第一个文本视图的id,而不是单击的一个。

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    // Create your context menu here
    menu.setHeaderTitle("Context Menu");
    menu.add(0, v.getId(), 0, "Edit n Replace");
    menu.add(0, v.getId(), 1, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
    // Call your function to preform for buttons pressed in a context menu
    // can use item.getTitle() or similar to find out button pressed
    // item.getItemID() will return the v.getID() that we passed before
    super.onContextItemSelected(item);

    if ( item.getTitle().toString().equals("Delete")){
        NotesDatabase db =new NotesDatabase(this);


        TextView tv = (TextView) findViewById(item.getItemId());
        db.searchAndDelete(tv.getText().toString());
    }
    return true;
}

2 个答案:

答案 0 :(得分:1)

为TextView

添加相同的ID
menu.add(0, v.getId(), 0, "Edit n Replace");
menu.add(0, v.getId(), 1, "Delete");

尝试使用每个文本视图的不同ID。像这样:

menu.add(0, 1, 0, "Edit n Replace");
menu.add(0, 2, 1, "Delete");

答案 1 :(得分:0)

您应该需要监听列表操作onClick(View v)事件参见示例。

//声明字符串全局变量 String result = null;

//点击contextmenu

之前点击onClick时获取TextView
public void onClick(View v)
{
   TextView tv = (TextView)v.findViewById(R.id.yourTextViewId);
    result=tv.getText().toString();
}



 public boolean onContextItemSelected(MenuItem item) 
{

        super.onContextItemSelected(item);

        if ( item.getTitle().toString().equals("Delete")){
            NotesDatabase db =new NotesDatabase(this);


            TextView tv = (TextView) findViewById(item.getItemId());
            db.searchAndDelete(result);
        }
        return true;
    }