У меня есть ListView, который позволит пользователю долгое нажатие на элемент, чтобы получить контекстное меню. Проблема, с которой я сталкиваюсь, заключается в определении того, какие ListItem
они долгое нажатие. Я пробовал сделать это:
myListView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override public void onCreateContextMenu(ContextMenu menu, final View v, ContextMenuInfo menuInfo) {
menu.add("Make Toast")
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override public boolean onMenuItemClick(MenuItem item) {
String toastText = "You clicked position " + ((ListView)v).getSelectedItemPosition();
Toast.makeText(DisplayScheduleActivity.this, toastText, Toast.LENGTH_SHORT).show();
return true;
}
});
}
});
но он просто зависает до появления ANR. Я подозреваю, что после создания меню ListItem
больше не будет выбран.
Похоже, вы можете отслеживать клики или длинные клики, а затем записывать нажатый элемент:
mArrivalsList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
// record position/id/whatever here
return false;
}
});
но для меня это очень важно. У кого-нибудь есть лучшие решения для этого?