2012-01-27 2 views
1

Я разрабатывает Android-приложение, которое имеет 3 ListView и один ContextMenu для каждого вида:Как определить, какой ListView был нажат?

@Override ничтожной (меню ContextMenu, Вид зрения, ContextMenuInfo информации) общественного onCreateContextMenu {

menu.add(Menu.NONE, CONTEXT_MENU_ITEM_DELETE, Menu.NONE, "Delete"); 
super.onCreateContextMenu(menu, view, info); 

}

Регистрация для мыши ловли:

this.registerForContextMenu(mFirstCategory);  
this.registerForContextMenu(mSecondCategory); 
this.registerForContextMenu(mMainCategory); 

mFirstCatego ry, mSecondCategory, mMainCategory - ListViews. Кроме того, я метод для получения строки щелкнул:

@Override общественного логический onContextItemSelected (MenuItem элемент) {

AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo(); 
String name = null; 
switch (info.targetView.getId()) { 

case (R.id.listViewFirst): name="First"; 
case (R.id.listViewSecond): name="Second"; 
case (R.id.listViewMain): name="Main"; 

} 

Toast.makeText(this, name+"_"+String.valueOf(info.position), Toast.LENGTH_LONG).show(); 

return super.onContextItemSelected(item); 

}

мне нужно определить позицию (строка) щелкнул из ListView и ListView щелкнул , Мой блок «switch/case» не работает. Пожалуйста, скажите мне, как я могу это сделать?

ответ

0

targetView - это одна строка из списка ListView. Это родитель будет ваш ListView:

final ListView listView = (ListView) info.targetView.getParent(); 

А потом сделать:

switch (listView.getId()) 
+0

В некоторых случаях targetView.getParent() возвращает null - любая идея, почему это происходит (и почему это происходит иногда)? – Dabbler

1

Не уверен, если это то, что можно определить как «переключатель/корпус блок не работает», но мне кажется, вы забыли назвать break; после каждого case - так name всегда будет Main.

case (R.id.listViewFirst): name="First"; break; 
case (R.id.listViewSecond): name="Second"; break; 
case (R.id.listViewMain): name="Main"; break; 
Смежные вопросы