У меня есть ViewPager
, который использует ListFragments
на каждой странице. Я реализую onListItemClick
и onContextItemSelected
для обработки щелчков и длинных часов элемента списка соответственно. Данные ListFragment
загружаются через AsyncTask
из Интернета.Android ListFragment в ViewPager с помощью контекстного меню
Желаемое поведение - короткое нажатие на элемент списка, чтобы начать подробное действие, чтобы показать детали для этого местоположения (это приложение для погоды). Когда пользователь долго нажимает, появляется контекстное меню, чтобы предоставить пользователю другие параметры, в том числе для просмотра необработанных данных.
Работа с коротким прессом и деталями работает нормально. проблема заключается в длинном нажатии, контекстном меню. Когда пользователь находится на странице 3 и выбирает второй элемент в списке, используя длительное нажатие, а затем выбирает «показать исходные данные» для этого местоположения, отображаются необработанные данные для второго элемента на стр. 2, а не стр. 3.
Прямо сейчас я использую setOffscreenPageLimit (1). когда я изменить что setOffscreenPageLimit (2), данные страницы 1 отображается вместо страницы 3.
Код:
@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;
Я пытаюсь выяснить, почему сырье и locationID данные не являются извлекается из фрагмента, который в настоящее время отображается на ViewPager, но со страницы смещения. Я все еще изучаю Фрагменты, поэтому, вероятно, я пропустил что-то тонкое.