私の問題は、新しいデータを取得したときに、カスタム アダプターを使用するビューページャーがビューを更新しないことです。多くのプログラマーが同じバグを抱えていることを発見したので、多くの提案を試みましたが、うまくいきません。すごく疲れた。もう一度、私のソースを読んで、ビューの更新に失敗した理由を理解してください。ここに私のFragmentAdapterがあります:
private class SwipeyTabsPagerAdapter extends FragmentPagerAdapter implements
SwipeyTabsAdapter {
private final Context mContext;
private String[] datas;
public SwipeyTabsPagerAdapter(Context context, FragmentManager fm, String[] ds) {
super(fm);
this.mContext = context;
datas=ds;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
Log.e("new item:", datas[position]);
return SwipeyTabFragment.newInstance(datas[position]);
}
@Override
public int getCount() {
return datas.length;
}
public TextView getTab(final int position, SwipeyTabs root) {
TextView view = (TextView) LayoutInflater.from(mContext).inflate(
R.layout.swipey_tab_indicator, root, false);
view.setText(datas[position]);
view.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mViewPager.setCurrentItem(position);
}
});
return view;
}
}
ここでアダプターを設定します:
SwipeyTabsPagerAdapter adapter = new SwipeyTabsPagerAdapter(getApplicationContext(), getSupportFragmentManager(),dicts);
mViewPager.setAdapter(adapter);
mTabs.setAdapter(adapter);
mViewPager.getAdapter().notifyDataSetChanged();
logcat を使用すると、初回のみ newItem が処理されるため、ビューを更新できないことが明確にわかります。