Java 将ArrayList条目设置为ViewFlipper子项

Java 将ArrayList条目设置为ViewFlipper子项,java,android,viewflipper,Java,Android,Viewflipper,“我的活动”中将显示30多个视图。每个视图都是一个RelativeLayout,其中包含嵌套的ImageView和一些TextView(其中一些是静态的,一些是可变的)。重构为显示结果的编程方式,它看起来像: tbnImages = db.getTbnImages(); tbnNames = db.getTbnNames(); tbnExts = db.getTbnExts(); tbnDescs = db.getTbnDescs(); vf = (ViewFlipper) findViewB

“我的活动”中将显示30多个视图。每个视图都是一个RelativeLayout,其中包含嵌套的ImageView和一些TextView(其中一些是静态的,一些是可变的)。重构为显示结果的编程方式,它看起来像:

tbnImages = db.getTbnImages();
tbnNames = db.getTbnNames();
tbnExts = db.getTbnExts();
tbnDescs = db.getTbnDescs();

vf = (ViewFlipper) findViewById(R.id.viewFlipperTbnImages);
vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in));
vf.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out));

detector = new SimpleGestureFilter(this, this);

tbnImage = (ImageView) findViewById(R.id.tbnImage); 
tbnName = (TextView) findViewById(R.id.tbnName);        
tbnExt = (TextView) findViewById(R.id.tbnExt);      
tbnDesc = (TextView) findViewById(R.id.tbnDesc);        
如何配置ViewFlipper,使
.showNext()
.showPrevious()
方法能够显示正确的视图,包括在最后一个视图(
.showNext()
重定向到第一个视图)和第一个视图(
.showPrevious()
显示最后一个视图)启动方法时的正确行为


所有变量(ImageView图片和TextView文本)都取自ArrayList。如何将它们设置为ViewFlipper子视图?

您需要生成所有30个视图,并将它们添加为ViewFlipper的子视图。如果所有视图共享一个布局,则应创建一个自定义视图来处理它

public class CustomView extends RelativeLayout{

    public CustomView(Context context, Uri imageUri, String tbnName, String tbnDescripton, String tbnDesc) {
        super(context);

        LayoutInflater.from(context).inflate(R.layout.your_layout_resource, this, true);

        ImageView tbnImage = (ImageView) findViewById(R.id.tbnImage);
        TextView tbnName = (TextView) findViewById(R.id.tbnName);
        TextView tbnExt = (TextView) findViewById(R.id.tbnExt);
        TextView tbnDesc = (TextView) findViewById(R.id.tbnDesc);

        tbnImage.setImageURI(imageUri);
        tbnName.setText(tbnName);
        tbnImage.setText(tbnDescription);
        tbnExt.setText(tbnDesc);
    }
}
其中“your_layout_resource”是当前的RelativeLayout资源,根元素为“merge”。然后,您只需创建所需的所有视图并将其添加到ViewFlipper:

    for(int i = 0; i<tbnImages.size(); i++){
        vf.addView(new CustomView(context,
                tbnImages.get(i),
                tbnNames.get(i),
                tbnDescripton.get(i),
                tbnDescs.get(i)));
    }

for(int i=0;我做得很好,谢谢!关于ViewPager:我想把它添加到我未来的一个项目中,这样当我更熟悉它时,也许我会重构代码。谢谢你的提醒,我差点忘了这个布局管理器:-)
    for(int i = 0; i<tbnImages.size(); i++){
        vf.addView(new CustomView(context,
                tbnImages.get(i),
                tbnNames.get(i),
                tbnDescripton.get(i),
                tbnDescs.get(i)));
    }