【发布时间】:2015-03-27 12:37:14
【问题描述】:
MainActivity(extends fragmentActivity) 具有调用 listviewadapter 的 listview,如果我需要在 ViewPager 中生成 5 个片段,则现在在其中有一个带有 ViewpagerAdapter 的 ViewPager 如何将 getFragmentManager() 传递给适配器。
MainActivity [fragmentActivity] ----> Listview ----> ListviewAdapter[Custom BaseAdapterAdapter with getview of layout ViewPager] - --> ViewPager ---> ViewPageAdapter[我需要根据位置创建5个片段?]
如果我粘贴整个代码会太长,所以我只附加了
public class ViewPagerAdapter extends PagerAdapter {
ArrayList<ModelClass> arrayModelClasses = new ArrayList<ModelClass>();
Context mcontext ;
LinearLayout layouttest;
final int PAGE_COUNT = 5;
private String titles[] = new String[] { "Villa ","", "" ,"","",""};
private int[] imageResId = { R.drawable.transparant,R.drawable.ic_action_place, R.drawable.icon_3d1,
R.drawable.icon_flooplan,R.drawable.icon_gallery,R.drawable.icon_location };
@SuppressLint("NewApi")
@Override
public void finishUpdate(ViewGroup container) {
// TODO Auto-generated method stub
super.finishUpdate(container);
}
public ViewPagerAdapter(ArrayList<ModelClass> arrayModelClasses , Context context) {
super();
this.arrayModelClasses = arrayModelClasses;
this.mcontext= context;
}
@Override
public boolean isViewFromObject(View collection, Object object) {
return collection == ((View) object);
}
View view;
@Override
public Object instantiateItem(View collection, int position) {
if (position == 0) {
//need to call fragment 1
}if (position == 1) {
//need to call fragment 2
}if (position == 2) {
//need to call fragment 3
}if (position == 3) {
//need to call fragment 4
}if (position == 4) {
//need to call fragment 5
}
return view;
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
@Override
public CharSequence getPageTitle(int position) {
Drawable image = mcontext.getResources().getDrawable(imageResId[position]);
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
SpannableString sb = new SpannableString(" " + titles[position] );
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
@Override
public int getCount() {
return PAGE_COUNT;
}
}
link 但它使用 FragmentPagerAdapter 作为 viewPager 并从 FragmentActivity 传递了 getSupportFragmentManager 但它不可能使用 2 个适配器所以帮助。
问题:如何在 listview 中的 viewPager 中创建片段。很抱歉,如果它令人困惑。
谢谢,
【问题讨论】:
-
如果你需要基于位置创建,那么你需要维护一个特定位置的片段数组列表
标签: android listview android-fragments android-viewpager