Emi*_*Adz 15 android android-viewpager
我有这个问题,我有FragmentActivity一个ViewPager和一个ViewPagerAdapter.
在这个ViewPager中,我有3个Fragments,每个都包含一个TableLayout以编程方式使用a填充的2dArrayList.
单击FragmentActivity布局中的按钮,我过滤了数据,2dArrayList并且基本上需要Fragments使用新数据集重新创建所有3 (onCreateView在所有数据集中运行方法).
所以我onClickListener为这个按钮创建一个:
private class SlicerSelectedOnClickListener implements OnClickListener {
private ODSharedSlicer slicer;
public SlicerSelectedOnClickListener(ODSharedSlicer slicer) {
super();
this.slicer = slicer;
}
public void onClick(View v) {
String slicerValue = ((Button) v).getText().toString();
Log.d(TAG,"Slicer value: "+ slicerValue +" chosen");
application.currentReport.getODSharedSlicers().get(0).getSharedSlicerSelectedMemebers().add(slicerValue);
ViewGroup parent = (ViewGroup) ((Button) v).getParent();
for (int i = 0; i < parent.getChildCount(); i++)
{
if ((parent.getChildAt(i) != v) && (parent.getChildAt(i) instanceof ToggleButton))
{
((ToggleButton) parent.getChildAt(i)).setChecked(false);
}
}
mPagerAdapter.notifyDataSetChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我有一个mPagerAdapter.notifyDataSetChanged();
As在这里建议:
在这个方法结束时,所以我希望适配器重新创建所有的Fragments,但是onCreateView任何一个片段都不会运行.
任何人都可以建议我做错了什么.任何援助将不胜感激.
Zia*_*ish 20
对于那些仍然面临同样问题的人,当我有七个片段的viewpager时,我遇到了同样的问题.这些片段的默认值是从服务加载英语内容,但这里的问题是我想更改设置活动的语法,完成设置活动后我希望主活动中的viewpager刷新片段以匹配来自用户的语言选择如果用户在这里选择阿拉伯语,那么加载阿拉伯语内容我从第一个trr开始工作:D
1.你必须使用FragmentStatePagerAdapter*.
mainActivity我覆盖了onResume并执行了以下操作
if (!(mPagerAdapter == null)) {
mPagerAdapter.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)我在mPagerAdapter中删除了getItemPosition()并使其返回POSITION_NONE.
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Run Code Online (Sandbox Code Playgroud)像魅力一样工作
Emi*_*Adz 10
正如@Luksprog所建议的那样,将我的适配器类更改为:
public class ViewPagerAdapter extends FragmentPagerAdapter
{
private List<Fragment> fragments;
/**
* @param fm
* @param fragments
*/
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
/* (non-Javadoc)
* @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
*/
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
/* (non-Javadoc)
* @see android.support.v4.view.PagerAdapter#getCount()
*/
@Override
public int getCount() {
return this.fragments.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
Run Code Online (Sandbox Code Playgroud)
解决了我的问题.
我做的是添加这个方法:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17722 次 |
| 最近记录: |