传递类型数组时图像未加载

时间:2018-06-14 14:42:42

标签: android arrays android-studio android-viewpager typed-arrays

我正在使用自定义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个视图的不同数组,我肯定不想;也想为它做一个适配器

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好。它应该工作。使用构造函数如下。并确保布局中显示ViewPager

 ImageAdapter(Context context, TypedArray imgarray){
        this.context=context;
        mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        GalImages=imgarray;  
    }
相关问题