2

3 つのスライドを含む ViewPager があります。各スライドに、3 つの画像といくつかの異なるテキスト ラベルを追加できるようにしたいと考えています。現在持っているコードを使用すると、各スライドに 1 つの画像を追加できます。各スライドに複数の画像とテキストを使用してこの作業を行う方法について混乱しています。どんな助けでも大歓迎です。

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

4 に答える 4

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 content の変数を宣言し、 imageviews を宣言し、それらを一緒にバインドします...これは機能するはずです...アクティビティで変数を宣言された順序でアダプターに渡します. ソリューションは問題なく機能します。URLから画像を取得するためにaqueryを使用しました。imageview.setImageResource();単に画像リソースを渡し、メソッドを介してバインドできます

于 2013-07-05T19:51:36.330 に答える
0

詳細な説明とViewPagerIndicatorの使用が必要な場合

ViewPagerIndicator 動的レイアウト

私はいくつかの調査を行い、動的レイアウトのこのソリューションを見つけました。

質問: Android: ViewPagerIndicator - ページごとに異なるレイアウトを作成する

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

レイアウトごとにクリックイベントを実行する

ジェスチャー リスナーの使用:

質問: Android でイベント ViewPagerIndicator をタッチまたはクリックします

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

于 2014-04-13T15:24:02.503 に答える