Android ViewPager не отображает изображения содержимого

В моем приложении есть viewpager, который используется для отображения набора изображений. Однако, когда я запускаю действие, просмотрщик не показывает никакого контента, хотя я проверил, что метод getCount() в моем пользовательском классе адаптера возвращает 1 с помощью отладчика.

Схема моего адаптера:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout_picture"
    android:clickable="true">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id ="@+id/iv_picture"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Picture"/>

</LinearLayout>

Мой макет ViewPager:

   <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/vp_pictures"
        android:visibility="visible"/>

Мой собственный класс адаптера:

public class PicturePagerAdapter extends PagerAdapter{

Context context;
LayoutInflater inflater;
ArrayList<Bitmap> data;
ViewPager pager;
private boolean deleteEnable;

public PicturePagerAdapter(Context ctx, ArrayList<Bitmap> data, ViewPager p, boolean delete_enable){
    this.context = ctx;
    this.data = data;
    this.pager = p;
    this.deleteEnable = delete_enable;
}

@Override
public int getCount() {
    return data.size();
}

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

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

    ImageView picture;
    LinearLayout layout_picture;

    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.pager_adapter_pictures, null);
    picture = (ImageView)v.findViewById(R.id.iv_picture);
    layout_picture = (LinearLayout)v.findViewById(R.id.layout_picture);
    BitmapDrawable drawable = new BitmapDrawable(data.get(position));
    picture.setImageDrawable(drawable);
    if(deleteEnable) {
        layout_picture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder b = new AlertDialog.Builder(context);
                b.setTitle(context.getResources().getString(R.string.actions_title));
                b.setMessage(context.getResources().getString(R.string.actions_picture));
                b.setNegativeButton(context.getResources().getString(R.string.delete_picture), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        removeBitmapAt(pager, position);
                    }
                });
            }
        });
    }
    container.addView(v);
    return v;
}

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

public void addBitmap(Bitmap map){
    pager.setAdapter (null);
    this.data.add(map);
    pager.setAdapter(this);
}

public void removeBitmapAt(ViewPager pager, int index){
    pager.setAdapter (null);
    this.data.remove(index);
    pager.setAdapter (this);
}

И, наконец, вот как я настраиваю viewpager в своей деятельности:

this.picturePager = (ViewPager) findViewById(R.id.vp_pictures);
this.pagerAdapter = new PicturePagerAdapter(context, activityController.getCurrentBook().getPictures(), picturePager, false);
this.picturePager.setAdapter(this.pagerAdapter);
Toast.makeText(this, "Size:"+picturePager.getAdapter().getCount(),Toast.LENGTH_LONG).show();

Toast() в приведенном выше коде вернет 1, что правильно. Однако ViewPager не отображается в моей деятельности, пожалуйста, помогите.


person Noodles    schedule 04.04.2016    source источник


Ответы (1)


Установите android:layout_height="match_parent" в viewpager xml.

person user2486322    schedule 04.04.2016