我有一个活动,它通过视图寻呼机保存两个片段。 我在片段A上显示了一个arraylist,在片段B中显示了项目的列表视图。当我检查其中一些项目并单击一个按钮时,它们将被传递到片段A的数组列表中,并且应该首先显示。
数据确实按照预期传递给片段A. 问题是它不显示刷新的数组列表。
我尝试将ViewPager成员设置为静态,然后每次单击片段B中的该按钮将其传递给片段A时将其传递给片段A. 然后在片段A中,我在该适配器成员上执行notifyDataSetChanged()。 它仍然无效。
public class PagerActivity extends FragmentActivity implements MainFragment.AddToHistoryInterface
{
static ViewPagerAdapter adapter;
@Override
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_pager );
ViewPager viewPager = ( ViewPager ) findViewById( R.id.viewPager );
adapter = new ViewPagerAdapter( getSupportFragmentManager() );
viewPager.setAdapter( adapter );
}
public static void removeFromB( List<Password> listFromB )
{
MainFragment.fromBtoA( listFromB, adapter );
}
然后,在片段A中: .... ...
public static void fromHistoryToMain( List<Password> listBackToMain, ViewPagerAdapter adapter )
{
passwordsList.addAll( 0, listBackToMain );
adapter.notifyDataSetChanged();
}
答案 0 :(得分:1)
首先创建一个界面
public interface UpdateableFragment {
public void update(UpdateData xyzData);
}
您的片段应该实现UpdateableFragment接口
public class SomeFragment extends Fragment implements
UpdateableFragment{
@Override
public void update(UpdateData xyzData) {
// do whatever you want to update your data
}
}
然后像你这样在你的适配器中覆盖getItemPosition方法
@Override
public int getItemPosition(Object object) {
if (object instanceof UpdateableFragment) {
((UpdateableFragment) object).update(updateData);
}
//don't return POSITION_NONE, avoid fragment recreation.
return super.getItemPosition(object);
}
然后调用此方法更新视图分页器片段
public void refreshContent(UpdateData xyzData) {
this.updateData = xyzData;
notifyDataSetChanged();
}