我是android新手, 我创建了一个包含标签的活动。每个选项卡都包含一个列表视图,现在在上下文菜单中,我可以选择删除和编辑列表视图内容。但我无法在列表视图中获取所选项目的标识。列表视图从数据库中的3个不同表填充。
通过直接给出列表视图名称,我可以获取数据,但我有3个不同的列表视图。
这就是我所做的
birthdaylv = (ListView)findViewById(R.id.bdaylist);
anniversarylv = (ListView)findViewById(R.id.anniversarylistview);
otherslv = (ListView)findViewById(R.id.otherslistview);
registerForContextMenu(birthdaylv);
registerForContextMenu(anniversarylv);
registerForContextMenu(otherslv);
try{
SimpleAdapter adapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] {"name", "date"}, new int[] {android.R.id.text1, android.R.id.text2});
birthdaylv.setAdapter(adapter);
}
catch(NullPointerException e){}
try{
SimpleAdapter adapter2 = new SimpleAdapter(this, data1, android.R.layout.simple_list_item_2, new String[] {"name", "date"}, new int[] {android.R.id.text1, android.R.id.text2});
anniversarylv.setAdapter(adapter2);
}
catch(NullPointerException e){}
try{
SimpleAdapter adapter3 = new SimpleAdapter(this, data2, android.R.layout.simple_list_item_2, new String[] {"name", "date"}, new int[] {android.R.id.text1, android.R.id.text2});
otherslv.setAdapter(adapter3);
}
catch(NullPointerException e){}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("What you want to do?");
menu.add(0, v.getId(), 0, "Edit Date");
menu.add(0, v.getId(), 0, "Delete Event");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
position = (int) info.id;
Log.d("Event", "List position "+position);
if(item.getTitle()=="Edit Date"){
DatePickerDialog dpd = new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
}
}, year, month, dayofmonth);
dpd.show();
Toast.makeText(MainActivity.this, "Editing", 1000).show();
}
else if(item.getTitle()=="Delete Event"){
Toast.makeText(MainActivity.this, "Deleting", 1000).show();
}
else {
return false;
}
return true;
}
如果选择了编辑日期,我想要哪个列表视图项,即我想要列表视图中的所选数据。 请帮忙。
先谢谢。
答案 0 :(得分:1)
这里的最佳做法是坚持MVC Pattern。在您的情况下,您向每个ListViews添加OnItemSelectedListener
并在MVC模型中存储所选值(而不是列表的索引),之后您可以通过应用程序从应用程序的任何位置访问所选数据模型。