我有一个动态创建的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;
}
答案 0 :(得分:1)
为TextView
添加相同的IDmenu.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时获取TextViewpublic 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;
}