У меня есть фрагмент, хостиющий несколько фрагментов списка с использованием библиотеки поддержки. Предполагается, что фрагменты списка отображают данные, которые я получаю с асинхронной задачи в родительском фрагменте. Я пытался точно выяснить, как точно загружаются данные, потому что они не загружаются правильно. ArrayList.
Eg. Для 3 -й страницы в нем должна быть получена Arrlist [2], которая содержит `arraylist для отображения в виде списка. < /P>
Пейджер действует странно. Может быть, я не понимаю жизненный цикл фрагментов или то, как их использует пейджер. У меня 7 фрагментов. Если я начну на Frag3, пейджер покажет фрагмент 3 без данных. Он также загружает фрагмент 2 и 4 без данных. Если я пойду налево на флаг 1, он будет правильно отображать фрагмент 1 и загружать фрагмент 0. Я могу правильно переключиться на Frag 0, но если я переключаюсь на Frag 2, он загружает данные из Frag 0 и загружает данные Frag 0 во все остальные представления. Если я буду идти вперед и назад, он заменит все данные в каждом фрагменте на данные из Frag 0. Я считаю, что они не загружают данные сразу, потому что у него нет данных, когда запускается видоискатель. Я еще не заставил его ждать задачи асинхронного. Поэтому я поместил обновление в OncreateView () фрагмента. Я чувствую, что это маленькая вещь, которую я только что не уместил, или я упускаю ее из виду. Я попытался реализовать FragmentStatePagerAdapter , но я не думаю, что сделал это правильно.
public class ListFragmentDisplay extends SherlockFragment {
public static final String TAG = "listFragmentDisplay";
Calendar calendar = Calendar.getInstance();
private int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// listbyday is a list of hash maps each list of hash maps represents a day
// of the week with items for that Object
private ArrayList listByDay = null;
private String objectName = null;
private ViewPager pager;
private FragAdapter adapter;
public ArrayList getList(int day) {
return listByDay.get(day);
}
private void getObjectName() {
barName = ((MainFragActivity) getActivity()).getobjectSelected();
}
public static ListFragmentDisplay newInstance() {
return new ListFragmentDisplay();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the ListView layout file.
initArrList();
getObjectName();
fillList();
return inflater.inflate(R.layout.list_view, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
pager = (ViewPager) view.findViewById(R.id.viewPager);
adapter =new FragAdapter(getChildFragmentManager());
if (pager.getAdapter() == null)
pager.setAdapter(adapter);
reload();
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {reload();}
@Override
public void onPageSelected(int arg0) {
}
});
pager.setCurrentItem(dayOfWeek-1);
}
private void initArrList() {
if (listByDay == null) {
listByDay = new ArrayList();
} else {
listByDay.clear();
}
for (int i = 0; i < 7; i++) {
ArrayList hm = new ArrayList();
listByDay.add(hm);
}
}
synchronized private void fillList() {
LoadWebTask lWT = new LoadWebTask();
executeAsyncTask(lWT, getSherlockActivity().getApplicationContext());
}
< /code>
FragmentPager < /p>
public class FragAdapter extends FragmentPagerAdapter {
private static final String[] CONTENT = new String[] { "frag0", "frag1",
"frag2", "frag3", "frag4", "frag5", "frag6" };
public FragAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return MyListFragment.newInstance(arg0);
}
@Override
public int getCount() {
return CONTENT.length;
}
@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length];
}
}
< /code>
listfragment < /p>
public class MyListFragment extends SherlockListFragment {
public static final String NAME_TAG = "name";
public static final String DESCRIPTION_TAG = "description";
private static int dow;
public static final String TAG = "listFragment";
// Keys used in Hashmap that will be mapped to the rows
String[] dFrom = { NAME_TAG, DESCRIPTION_TAG };
private ArrayList list;
int[] dTo = { R.id.name, R.id.description };
public void upDateList() {
//**************************Not really sure if this is how things are supposed
//** to be done. For my small data- set i feel like it will work but i would
//** be interested in knowing how else this might be done.
ListFragmentDisplay lFD = (ListFragmentDisplay) this
.getParentFragment();
dList = lFD.getList(dow);
}
public static MyListFragment newInstance(int pos) {
MyListFragment frag = new MyListFragment();
dow = pos;
return (frag);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
upDateList();
View results = inflater.inflate(R.layout.list_fragment, container,
false);
SimpleAdapter adapter = new SimpleAdapter(getParentFragment()
.getActivity(), list, R.layout.listrow, dFrom, dTo);
setListAdapter(adapter);
return results;
}
}
Подробнее здесь: https://stackoverflow.com/questions/137 ... eird-pager
Списки фрагментов неправильные данные странный пейджер ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1748264854
Anonymous
У меня есть фрагмент, хостиющий несколько фрагментов списка с использованием библиотеки поддержки. Предполагается, что фрагменты списка отображают данные, которые я получаю с асинхронной задачи в родительском фрагменте. Я пытался точно выяснить, как точно загружаются данные, потому что они не загружаются правильно. ArrayList.
Eg. Для 3 -й страницы в нем должна быть получена Arrlist [2], которая содержит `arraylist для отображения в виде списка. < /P>
Пейджер действует странно. Может быть, я не понимаю жизненный цикл фрагментов или то, как их использует пейджер. У меня 7 фрагментов. Если я начну на Frag3, пейджер покажет фрагмент 3 без данных. Он также загружает фрагмент 2 и 4 без данных. Если я пойду налево на флаг 1, он будет правильно отображать фрагмент 1 и загружать фрагмент 0. Я могу правильно переключиться на Frag 0, но если я переключаюсь на Frag 2, он загружает данные из Frag 0 и загружает данные Frag 0 во все остальные представления. Если я буду идти вперед и назад, он заменит все данные в каждом фрагменте на данные из Frag 0. Я считаю, что они не загружают данные сразу, потому что у него нет данных, когда запускается видоискатель. Я еще не заставил его ждать задачи асинхронного. Поэтому я поместил обновление в OncreateView () фрагмента. Я чувствую, что это маленькая вещь, которую я только что не уместил, или я упускаю ее из виду. Я попытался реализовать FragmentStatePagerAdapter , но я не думаю, что сделал это правильно.
public class ListFragmentDisplay extends SherlockFragment {
public static final String TAG = "listFragmentDisplay";
Calendar calendar = Calendar.getInstance();
private int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// listbyday is a list of hash maps each list of hash maps represents a day
// of the week with items for that Object
private ArrayList listByDay = null;
private String objectName = null;
private ViewPager pager;
private FragAdapter adapter;
public ArrayList getList(int day) {
return listByDay.get(day);
}
private void getObjectName() {
barName = ((MainFragActivity) getActivity()).getobjectSelected();
}
public static ListFragmentDisplay newInstance() {
return new ListFragmentDisplay();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the ListView layout file.
initArrList();
getObjectName();
fillList();
return inflater.inflate(R.layout.list_view, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
pager = (ViewPager) view.findViewById(R.id.viewPager);
adapter =new FragAdapter(getChildFragmentManager());
if (pager.getAdapter() == null)
pager.setAdapter(adapter);
reload();
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {reload();}
@Override
public void onPageSelected(int arg0) {
}
});
pager.setCurrentItem(dayOfWeek-1);
}
private void initArrList() {
if (listByDay == null) {
listByDay = new ArrayList();
} else {
listByDay.clear();
}
for (int i = 0; i < 7; i++) {
ArrayList hm = new ArrayList();
listByDay.add(hm);
}
}
synchronized private void fillList() {
LoadWebTask lWT = new LoadWebTask();
executeAsyncTask(lWT, getSherlockActivity().getApplicationContext());
}
< /code>
FragmentPager < /p>
public class FragAdapter extends FragmentPagerAdapter {
private static final String[] CONTENT = new String[] { "frag0", "frag1",
"frag2", "frag3", "frag4", "frag5", "frag6" };
public FragAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return MyListFragment.newInstance(arg0);
}
@Override
public int getCount() {
return CONTENT.length;
}
@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length];
}
}
< /code>
listfragment < /p>
public class MyListFragment extends SherlockListFragment {
public static final String NAME_TAG = "name";
public static final String DESCRIPTION_TAG = "description";
private static int dow;
public static final String TAG = "listFragment";
// Keys used in Hashmap that will be mapped to the rows
String[] dFrom = { NAME_TAG, DESCRIPTION_TAG };
private ArrayList list;
int[] dTo = { R.id.name, R.id.description };
public void upDateList() {
//**************************Not really sure if this is how things are supposed
//** to be done. For my small data- set i feel like it will work but i would
//** be interested in knowing how else this might be done.
ListFragmentDisplay lFD = (ListFragmentDisplay) this
.getParentFragment();
dList = lFD.getList(dow);
}
public static MyListFragment newInstance(int pos) {
MyListFragment frag = new MyListFragment();
dow = pos;
return (frag);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
upDateList();
View results = inflater.inflate(R.layout.list_fragment, container,
false);
SimpleAdapter adapter = new SimpleAdapter(getParentFragment()
.getActivity(), list, R.layout.listrow, dFrom, dTo);
setListAdapter(adapter);
return results;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/13739716/listfragments-wrong-data-weird-pager[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия