我的应用是app app的图标视图
每个页面有12个图标,如果超过12个图标,下一页将显示其他图标。
我使用viewpager和gridview来实现这个接口,viewpager的每个片段都有一个gridview来显示项目。
在FragmentActivity中,我可以通过将OnPageChangeListener添加到viewpager来获取当前页面索引。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
但我无法在片段中获取索引
public class MyFragment extends Fragment {
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
public static final MyFragment newInstance(String message)
{
MyFragment f = new MyFragment();
Bundle bdl = new Bundle(1);
bdl.putString(EXTRA_MESSAGE, message);
f.setArguments(bdl);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String message = getArguments().getString(EXTRA_MESSAGE);
View v = inflater.inflate(R.layout.fragment, container, false);
//suppose the list has 15 items now
ArrayList list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(8);
list.add(9);
list.add(10);
list.add(11);
list.add(12);
list.add(13);
list.add(14);
list.add(15);
GridView gridview = (GridView) v.findViewById(R.id.gridview);
int currentIndex=??? //how to get index?
if(currentIndex==0){
gridview.setAdapter(new GridViewAdapter(list.subList(0,12));
} else if (currentIndex==1) {
gridview.setAdapter(new GridViewAdapter(list.subList(12,15));
}
return v;
}
}
不同页面中的片段应该显示不同的子项列表,如何获取片段中的索引?
答案 0 :(得分:2)
在创建FragmentPagerAdapter时,您必须覆盖一个名为getItem(int position)
的方法。你可以在那里传递索引。
既然你有这个:
public static final MyFragment newInstance(String message)
{
MyFragment f = new MyFragment();
Bundle bdl = new Bundle(1);
bdl.putString(EXTRA_MESSAGE, message);
f.setArguments(bdl);
return f;
}
您可以将索引放在bdl中,稍后在onCreate()
中获取答案 1 :(得分:0)
您应该在片段中引用viewPager并阅读它。
viewPager.getCurrentItem()
http://developer.android.com/reference/android/support/v4/view/ViewPager.html#getCurrentItem%28%29