Android 如何将图像动态添加到包含imageview的viewpager?

Android 如何将图像动态添加到包含imageview的viewpager?,android,android-layout,android-viewpager,Android,Android Layout,Android Viewpager,我的主布局中有一个viewpager。视图寻呼机仅包含由RelativeLayout包装的ImageView 我想做的是,当用户单击一个按钮时,它会将一个图像添加到特定的viewpager 我在stackoverflow上找到了这个答案(我认为这与我的问题有关),但是我完全不懂这个代码 到目前为止,这是我的代码: MainActivity.Java private PagerAdapter pAdapter; private ViewPager photoPager; ... pAdapt

我的主布局中有一个viewpager。视图寻呼机仅包含由RelativeLayout包装的ImageView

我想做的是,当用户单击一个按钮时,它会将一个图像添加到特定的viewpager

我在stackoverflow上找到了这个答案(我认为这与我的问题有关),但是我完全不懂这个代码

到目前为止,这是我的代码:

MainActivity.Java

private PagerAdapter pAdapter;
private ViewPager photoPager;

...

pAdapter = new GalleryPagerAdapter(getApplicationContext());
photoPager.setAdapter(pAdapter);

GalleryPagerAdapter.java

public class GalleryPagerAdapter extends PagerAdapter{

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

    public GalleryPagerAdapter(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);
    }
}
这是我想动态添加的视图

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:padding="10dp" >
    <ImageView
        android:id="@+id/photo_thumb"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="#000000"
        android:scaleType="fitXY"
        android:padding="0dp" />
</RelativeLayout>
什么是充气机??我应该将其初始化为什么


我希望有人能指点我。如果我听起来像是在问多个问题,我很抱歉。

充气器用于从xml布局中创建视图对象

因此,如果您的LAOUT
R.layout。我的页面布局之一

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:padding="10dp" >
    <ImageView
        android:id="@+id/photo_thumb"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="#000000"
        android:scaleType="fitXY"
        android:padding="0dp" />
</RelativeLayout>
只有最小的代码,但充气机将设置所有的布局参数以及

因此,与其像在
instantiateItem
中那样动态创建一个视图,如果您有一个xml,您只需将其膨胀并获得view类型的对象即可

因此,您可以将
实例化项
更改为:

 public Object instantiateItem(ViewGroup container, int position) {
        RelativeLayout v0 = (RelativeLayout ) inflater.inflate (R.layout.one_of_my_page_layouts, null);

        ImageView imageView = vo.findViewById(R.id.photo_thumb);
        int padding = 10;
        imageView.setPadding(padding, padding, padding, padding);
        imageView.setScaleType(ImageView.ScaleType.MATRIX);
        imageView.setImageResource(GalImages[position]);
        container.addView(v0, 0);
        return v0;
    }

是否要添加SD卡中的图像?是的,用户应能够从其手机图库中浏览。好的,需要一些时间为您确定答案。我将耐心等待……)同时,我将修补我遇到的引用链接。您扩展了PageAdapter,但需要一个此startOnActivityResult()方法ViewPager不能直接保存ImageView吗?当代码可以创建ImageView并将其添加到集合中时,为单个视图使用布局似乎太过分了。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:padding="10dp" >
    <ImageView
        android:id="@+id/photo_thumb"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="#000000"
        android:scaleType="fitXY"
        android:padding="0dp" />
</RelativeLayout>
ImageView iv=new ImageView(context);
RelativeLayout rl=new RelativeLayout(context);
rl.add(iv)
return rl;
 public Object instantiateItem(ViewGroup container, int position) {
        RelativeLayout v0 = (RelativeLayout ) inflater.inflate (R.layout.one_of_my_page_layouts, null);

        ImageView imageView = vo.findViewById(R.id.photo_thumb);
        int padding = 10;
        imageView.setPadding(padding, padding, padding, padding);
        imageView.setScaleType(ImageView.ScaleType.MATRIX);
        imageView.setImageResource(GalImages[position]);
        container.addView(v0, 0);
        return v0;
    }