我正在使用自定义viewpager适配器。我需要在多个位置的viewpagers所以我做了一个构造函数来接受TypedArrays。 但问题在于图像没有出现。浏览器的数量是正确的(在我的情况下为4)但它都是白色的
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="your_array_name">
<item>@drawable/apple</item>
<item>@drawable/apple</item>
<item>@drawable/apple</item>
<item>@drawable/apple</item>
</integer-array>
</resources>
customViewpager
public class ImageAdapter extends PagerAdapter {
Context context;
private TypedArray GalImages;
LayoutInflater mLayoutInflater;
ImageAdapter(Context context, TypedArray imgarray){
this.context=context;
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
GalImages=imgarray. //I don't understand what to write here
}
@Override
public int getCount() {
return GalImages.length();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
imageView.setImageResource(GalImages.getResourceId(position,0));
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout)object);
}
}
调用适配器
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
Resources r = getResources();
TypedArray imgarray = r.obtainTypedArray(R.array.your_array_name);
final ImageAdapter adapter = new ImageAdapter(this,imgarray);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
事情是,如果我在图像适配器本身中创建一个可绘制的整数数组,那么它工作正常,但我需要2个视图的不同数组,我肯定不想;也想为它做一个适配器
答案 0 :(得分:0)
您的代码看起来很好。它应该工作。使用构造函数如下。并确保布局中显示ViewPager
。
ImageAdapter(Context context, TypedArray imgarray){
this.context=context;
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
GalImages=imgarray;
}