Android ListFragment в ViewPager с использованием контекстного меню

1

У меня есть ViewPager который использует ListFragments на каждой странице. Я реализую onListItemClick и onContextItemSelected для обработки щелчка элемента списка и длинных часов соответственно. Данные ListFragment загружаются через AsyncTask из Интернета.

Желаемое поведение - короткое нажатие на элемент списка, чтобы начать подробное действие, чтобы показать детали для этого местоположения (это приложение для погоды). Когда пользователь долго нажимает, появляется контекстное меню, чтобы предоставить пользователю другие параметры, в том числе для просмотра необработанных данных.

Операция короткого нажатия и детализации работает нормально. проблема заключается в длинном нажатии, контекстном меню. Когда пользователь находится на стр. 3 и выбирает второй элемент в списке с помощью длительного нажатия, а затем выбирает "показывать необработанные данные" для этого местоположения, отображаются необработанные данные для второго элемента на стр. 2, а не стр. 3.

Сейчас я использую setOffscreenPageLimit (1). когда я меняю это на setOffscreenPageLimit (2), вместо страницы 3 отображаются данные со страницы 1.

Код:

@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
    case R.id.cmenu_showRaw:    

        ViewGroup dataPanel = (ViewGroup) myListView.getChildAt(info.position);         
        TextView tvRaw = (TextView) dataPanel.findViewById(R.id.textRaw);
        TextView tvLocationID = (TextView) dataPanel.findViewById(R.id.textLocationId);

        showDismissDialog(tvRaw.getText().toString(), tvLocationID .getText().toString()); 
        return true;

Я пытаюсь понять, почему данные raw и locationID не извлекаются из фрагмента, который в настоящее время отображается на ViewPager, но со страницы смещения. Я все еще изучаю Фрагменты, поэтому, вероятно, я пропустил что-то тонкое.

Теги:
android-viewpager
android-listfragment

1 ответ

2
Лучший ответ

Я понял это: info.targetView дает мне представление о том, что я нажал. Оттуда я могу сделать findViewById чтобы получить то, что мне нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню