Pregunta

Soy nuevo en la programación de Android. Tengo una galería con imágenes y, cuando hago clic en una imagen, debe aparecer un votador con imagen y título de pantalla completa y puedo deslizar toda la galería.He seguido este tutorial Ingrese la descripción de enlace aquí La única diferencia es que mis imágenes también se almacenan en una matriz, el título.Cuando ejecuto la aplicación se muestra la galería, pero el viewpager está vacío y no se desliza.No tengo errores, no tengo idea de lo que debería estar equivocado.Gracias de antemano :)

FullScreenImageApTapter.Java

package com.example.sherlockholmes.images;

import android.app.Activity;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.example.sherlockholmes.R;

public class FullScreenImageAdapter extends PagerAdapter {

    private Activity context;
    private LayoutInflater inflater;
    private int _position;
    private Integer[] mThumbIds;
    private String[] description;

    public FullScreenImageAdapter(Activity context,Integer[] mThumbIds,String[] description){
        this.context=context;
        this.mThumbIds =  mThumbIds;
        this.description = description;
    }


    @Override
    public int getCount() {
        return 0;
    }


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

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


        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container,
                false);

        ImageView imageView = (ImageView) viewLayout.findViewById(R.id.full_image);
        TextView textview = (TextView) viewLayout.findViewById(R.id.item_text);
        Button btnClose = (Button) viewLayout.findViewById(R.id.btnClose);
        imageView.setImageResource(mThumbIds[_position]);
        textview.setText(description[_position]);

        btnClose.setOnClickListener(new View.OnClickListener() {            
            @Override
            public void onClick(View v) {
                context.finish();
            }
        }); 

        ((ViewPager) container).addView(viewLayout,0);

        return viewLayout;
    }

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

    }

}

FullScreenViewActivity.Java

package com.example.sherlockholmes.images;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;

import com.example.sherlockholmes.R;

public class FullScreenViewActivity extends Activity{


    private FullScreenImageAdapter adapter;
    private ViewPager viewPager;

     private Integer[] mThumbIds = {
                R.drawable.acd1, R.drawable.acd1,
               R.drawable.acd1, R.drawable.acd1,
               R.drawable.acd1, R.drawable.acd1,
               R.drawable.acd1, R.drawable.acd1,
        };

        private String[] description={
                "apple","pinaple","rose","strawberry",
                "orange","lemon","potato","banana"
        };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fullscreen_view);

        viewPager = (ViewPager) findViewById(R.id.pager);


        Intent i = getIntent();
        int position = i.getIntExtra("position", 0);

        adapter = new FullScreenImageAdapter(FullScreenViewActivity.this,mThumbIds,description);

        viewPager.setAdapter(adapter);

        // displaying selected image first
        viewPager.setCurrentItem(position);
    }
}

¿Fue útil?

Solución

Prueba esto

 @Override
public int getCount() {
    return mThumbIds.length;
}

en lugar de

 @Override
public int getCount() {
    return 0;
}

en su FullScreenImageAdapter

y cambia esto

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

}

con

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

y también cambia esto

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

con

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

actualización: también necesita cambiar esto

  imageView.setImageResource(mThumbIds[_position]);
  textview.setText(description[_position]);

con

  imageView.setImageResource(mThumbIds[position]);
   textview.setText(description[position]);

En su FullScreenImageAdapter.it's BECOZ no ha inicializado _position y es por eso que la vista siempre busca la imagen y la leyenda de la matriz en la posición 0.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top