向每个ViewPager幻灯片添加多个图像和文本

时间:2013-07-05 19:44:57

标签: android android-viewpager

我有一个包含3张幻灯片的ViewPager。在每张幻灯片上,我希望能够添加3个图像和几个不同的文本标签。我目前的代码允许我为每张幻灯片添加一个图像。我很困惑如何使用每张幻灯片的多个图像和文本来完成这项工作。任何帮助将不胜感激。

public class ImageAdapter extends PagerAdapter {

    private final Context context;
    private final int[] GalImages = new int[] {
        R.drawable.workout_widget_master,
        R.drawable.workout_widget_master,
        R.drawable.workout_widget_master
    };

    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
        return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        int padding = 10;
        imageView.setPadding(padding, padding, padding, padding);
        imageView.setScaleType(ImageView.ScaleType.MATRIX);
        imageView.setImageResource(GalImages[position]);
        container.addView(imageView, 0);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((ImageView) object);
    }
}

4 个答案:

答案 0 :(得分:10)

public class ViewPagerAdapter2 extends PagerAdapter {

Context context;
String[] image1;
String[] description;


LayoutInflater inflater;

public ViewPagerAdapter2(Context context, String[] image1,String[] description) {
    this.context = context;
    this.image1 = image1;
    this.description=description;


}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == ((LinearLayout) object);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {


    TextView des;

    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View itemView = inflater.inflate(R.layout.slider, container,
            false);
    des = (TextView) itemView.findViewById(R.id.slider_des);
    des.setText(description[position]);

     AQuery aq = new AQuery(itemView);
     aq.id(R.id.imageView1).image(image1[position], true, true, 0, 0, null, AQuery.FADE_IN, AQuery.RATIO_PRESERVE);

     ((ViewPager) container).removeView(itemView);



    ((ViewPager) container).addView(itemView);

    return itemView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    ((ViewPager) container).removeView((LinearLayout) object);

}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return description.length;

}

}

这是你想要的实现...现在声明textview内容的变量,声明imageviews,将em绑定在一​​起......这应该工作...在你的活动上传递声明的顺序中的变量到适配器。解决方案将完美无缺。我用aquery从url获取图像。您只需传递图像资源并通过imageview.setImageResource();方法

绑定它

答案 1 :(得分:1)

而不是这行代码 container.addView(imageView,0);

记下((VIewPager)容器).addView(imageview,null);

这将在一个寻呼机

中添加上面提供的所有阵列图像

实施三个寻呼机

步骤1:在xml中声明3个viewpagers 然后在主要活动中

使用新的分页器初始化每个分页器并将适配器设置为ImageAdapter对象;

答案 2 :(得分:1)

根据您的要求创建一个视图,其中包含您想要的图像和文本数量。

in public Object instantiateItem(ViewGroup container,int position)   膨胀您的布局并添加到查看寻呼机它将完美地工作。

答案 3 :(得分:0)

如果您需要详细说明并使用 ViewPagerIndicator

ViewPagerIndicator动态布局

我做了一些研究,并找到了动态布局的解决方案。

问题:Android: ViewPagerIndicator - Creating different layouts for different pages

答案:https://stackoverflow.com/a/10696360/2236219

为每个布局执行点击事件

使用手势监听器

问题:Touch or Click event ViewPagerIndicator in Android

答案:https://stackoverflow.com/a/23016638/2236219