我刚刚开始编写android,我在一个片段中有一个ViewPager,我想要做的是如何从它的活动中监听ViewPagerAdapter的setPrimaryItem事件,这样我就可以将数据从适配器传递给活动。
我尝试使用界面,但我不知道如何在适配器中获取活动。
答案 0 :(得分:2)
这是基本的观察者模式,你会遇到很多。我为FragmentPagerAdapter
做了这样的事情,FragmentStatePagerAdapter
也应该这样做。
public abstract class ObservableFragmentPagerAdapter extends FragmentPagerAdapter {
private Fragment mCurrentFragment = null;
private OnPrimaryItemChangedListener mPrimaryItemListener = null;
public ObservableFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
if (mCurrentFragment != object) {
Fragment newFragment = (Fragment) object;
if (mPrimaryItemListener != null) {
mPrimaryItemListener.onPrimaryItemChanged(mCurrentFragment, newFragment);
}
mCurrentFragment = newFragment;
}
}
public void setOnPrimaryItemChangedListener(OnPrimaryItemChangedListener listener) {
mPrimaryItemListener = listener;
}
public interface OnPrimaryItemChangedListener {
void onPrimaryItemChanged(Fragment oldFragment, Fragment newFragment);
}
}
订阅的工作方式与例如设置OnClickListener
。