Динамически обновлять ViewPager?



Я не могу обновить содержимое в ViewPager.



вопрос: какова взаимосвязь и правильное использование методов instantiateItem() и getItem () в классе FragmentPagerAdapter?



я использовал только getItem () для создания экземпляра и возврата моих фрагментов:



@Override
public Fragment getItem(int position) {
return new MyFragment(context, paramters);
}


это сработало хорошо (но, как сказал Я не могу изменить содержание).



так что я нашел это: ViewPager PagerAdapter не обновляет вид



особенно тот, в котором это говорили о методе instantiateItem():




" мой подход заключается в использовании метода setTag () для любого экземпляра представления в методе instantiateItem ()"




так что теперь я хочу реализовать instantiateItem () для того, чтобы сделать это. Но я не знаю, что я должен туда вернуться (return is Object) и какова связь с getItem(int position)?



В настоящее время я использую getItem для создания экземпляра фрагмента, это неправильно? Но тогда я должен поставить фрагменты в переменной экземпляра или вообще не реализуют getItem ()...? Я просто не понимаю.



Я пробовал читать ссылка:






  • публичный абстрактный фрагмент getItem (int position)



    возвращает фрагмент, связанный с указанной позицией.




  • public Object instantiateItem (ViewGroup container, int position)



    создать страницу для данной позиция. Адаптер отвечает за добавление представления в контейнер, указанный здесь, хотя он должен только гарантировать, что это будет сделано к моменту его возвращения из finishUpdate(ViewGroup).
    Параметры



    контейнер, содержащий представление, в котором будет показана страница.
    расположите позицию страницы для создания экземпляра.



    возвращает



    возвращает объект, представляющий новую страницу. Это не должно быть представление, но может быть какой-то другой контейнер страница.






... но я до сих пор не понимаю, как они связаны и что я должен делать.



вот мой код. Я использую пакет поддержки v4.



ViewPagerTest



public class ViewPagerTest extends FragmentActivity {
private ViewPager pager;
private MyFragmentAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pager1);

pager = (ViewPager)findViewById(R.id.slider);

String[] data = {"page1", "page2", "page3", "page4", "page5", "page6"};

adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data);
pager.setAdapter(adapter);

((Button)findViewById(R.id.button)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
reload();
}
});
}

private void reload() {
String[] data = {"changed1", "changed2", "changed3", "changed4", "changed5", "changed6"};
//adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data);
adapter.setData(data);
adapter.notifyDataSetChanged();
pager.invalidate();

//pager.setCurrentItem(0);
}
}


MyFragmentAdapter



class MyFragmentAdapter extends FragmentPagerAdapter {
private int slideCount;
private Context context;
private String[] data;

public MyFragmentAdapter(FragmentManager fm, int slideCount, Context context, String[] data) {
super(fm);
this.slideCount = slideCount;
this.context = context;
this.data = data;
}

@Override
public Fragment getItem(int position) {
return new MyFragment(data[position], context);
}

@Override
public int getCount() {
return slideCount;
}

public void setData(String[] data) {
this.data = data;
}

@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}


MyFragment



public final class MyFragment extends Fragment {
private String text;

public MyFragment(String text, Context context) {
this.text = text;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.slide, null);
((TextView)view.findViewById(R.id.text)).setText(text);

return view;
}
}


вот также кто-то с подобной проблемой, нет ответы...



http://www.mail-archive.com/[email protected]/msg200477.html

718   0  

Comments

    Ничего не найдено.