アプリケーションのフラグメント内にViewPagerがあります。ViewPager内には、中央のデータソースからデータをプルする6つのリストビューがあります(各リストビューが日数のリストをプルするスケジュール)。ここで、PagerAdapterクラスに格納されているスケジュールを変更してから、すべてのリストビューへのアダプターとして機能するArrayAdapterを更新することにより、このスケジュールオブジェクトを更新しようとしています。1つのリストビューに切り替えると、正しいデータを使用して新しいアレイアダプタが作成されます。
残念ながら、これはまったく機能しません。アプリケーションライフサイクルのどの時点でもデータが表示されません。したがって、データをViewPagerに接続する際に根本的に間違ったことをしていると思います...
私はネットのいたるところにいて、すべてのフラグメントのもの、たくさんのビューページャーのものを読んでいます...誰かがこれを行う正しい方法を知っていますか?
これが私のDayAdapterのコードです(ViewPagerADapter)
public final class DayAdapter extends PagerAdapter {
//~Data Fields----------------------------------------//
/**
* The list adapter that the current list is being handed to.
*/
private Schedule schedule;
/**
* The current index of the day that is to be displayed.
*/
private int currentIndex;
/**
* ArrayAdpter to be used to connect data to all of the list views.
*/
private ArrayAdapter<Course> adapter;
//~Constructors---------------------------------------//
/**
* Constructor for the DayAdapter implementation of PagerAdapter. Takes in a
* Schedule object which is to be the data backing of the views displayed.
*
* @param theSChedule the Schedule object that is the backing for the ListViews.
*/
public DayAdapter(Schedule theSchedule) {
schedule = theSchedule;
currentIndex = schedule.getTodayIndex();
}
//~Methods--------------------------------------------//
public void setSchedule(Schedule theSchedule) {
schedule = theSchedule;
adapter.clear();
adapter.add(schedule.getDay(currentIndex).getList().get(0));
adapter.notifyDataSetChanged();
}
@Override
public Object instantiateItem(ViewGroup container, int index) {
LayoutInflater inflater = (LayoutInflater) container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.schedule_list_view, null);
ListView view = new ListView(container.getContext());
adapter = new ArrayAdapter<Course>(container.getContext(),
R.layout.list_view_child, schedule.getDay(index).getList());
view.setAdapter(adapter);
//TEST CODE!!!! This does not yield any sort data items in the list views!?
adapter.add(new Course("test", "test", "test", "test", "test", "test", "test"));
currentIndex = index;
((ViewPager) container).addView(layout);
return layout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
ViewPager pager = (ViewPager) container;
View view = (View) object;
pager.removeView(view);
}
/**
* Gets the pageTitle, which is the name of the day that is at position.
*
* @param position the index of the day selected.
* @return the name of the day the index refers to.
*/
@Override
public CharSequence getPageTitle(int position) {
return schedule.getDay(position).getThisDay();
}
@Override
public int getCount() {
return 6;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}