Определение выбранного элемента (в многоколонке ListView) порождает ContextMenu (Android) - PullRequest
0 голосов
/ 28 марта 2012

У меня есть ListView, который позволит пользователю долго нажимать на элемент, чтобы получить контекстное меню.Проблема у меня в том, чтобы определить, какой ListItem они долго нажимали.У меня есть 3 столбца, (ID, текст, комментарий).Мне нужно получить значение идентификатора при нажатии.

Я пытался сделать это:

@Override
public boolean onContextItemSelected(MenuItem item) {
  if (item.getTitle() == "Delete") {
    View view = getWindow().getDecorView().findViewById(android.R.id.content);
    //The rowId receive the ID clicked from the listview
    rowId = ((TextView)view.findViewById(R.id.ID)).getText().toString();
    showDialog(0);
  } else return false;
  return true;
}

НО, я всегда пишу идентификатор из первого элемента списка.Если я нажимаю на второй элемент в списке, я получаю только первый идентификатор в списке.

Любая помощь, пожалуйста.

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Попробуйте, если хотите извлечь информацию из выбранного представления.

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
View v = info.targetView;
rowId = ((TextView)v.findViewById(R.id.ID)).getText().toString();
1 голос
/ 28 марта 2012

Используйте приведенный ниже код для получения индекса выбранной строки -

public boolean onContextItemSelected(MenuItem item) {
            try {
                AdapterContextMenuInfo ctxMenuInfo;
                try {
                    ctxMenuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
                } catch (ClassCastException e) { 
                    return false;
                }

                 int selectedPostion = ctxMenuInfo.position;
}
...