Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

adicionar um botao de prox e voltar imagem em um recycleview com card de imagens.(Tipo um slide)

ola boa tarde, estou usando um recycleview com cardview para mostrar imagens, tipo um slide,o usuario vai passando a imagem com o dedo, entao adicionei botoes em baixo de proxima imagem , e voltar imagem , porem nao estou conseguindo fazer o código que quando o usuario clicar no botao a imagem mudar tanto para a proxima quanto para voltar.

to usando isso que peguei na net mas nao ta funcionando para o meu problema.

public class Paginator{
    public static final int TOTAL_NUM_ITEMS=10;
    public static final int ITEMS_PER_PAGE=1;
    public static final int ITEMS_REMAINING=TOTAL_NUM_ITEMS % ITEMS_PER_PAGE;
    public static final int LAST_PAGE=TOTAL_NUM_ITEMS/ITEMS_PER_PAGE;

    public ArrayList<String> generatePage(int currentPage)
    {
        int startItem=currentPage*ITEMS_PER_PAGE+1;
        int numOfData=ITEMS_PER_PAGE;
        ArrayList<String> pageData=new ArrayList<>();

        if (currentPage==LAST_PAGE && ITEMS_REMAINING>0)
        {
            for (int i=startItem;i<startItem+ITEMS_REMAINING;i++)
            {
                pageData.add("Number "+i);
            }
        }else
        {
            for (int i=startItem;i<startItem+numOfData;i++)
            {
                pageData.add("Number "+i);
            }
        }
        return pageData;
    }
}
(
5 respostas

Fala ai Marlos, de boa ?

Cara não entendi bem o que precisa fazer, mas me questiono se é necessário você precisar de um recyclerview pra isso, pelo que dá a entender você só precisa de uma lista, em memoria dos objetos e quer ficar clicando no botão e atualizar a tela.

Não é ?

desculpa nao ser tao claro to deixando um link https://drive.google.com/file/d/1hwzfSHhTHmS7drvZY4d1Mgbs48LcVzWu/view?usp=sharing

to listando as imagens com recycleview na horizontal entao se eu passar as imagens com o dedo elas vao corretamente , porem quero que os botoes em baixo funcione, o botao proxima imagem e voltar imagem.

solução!

Fala ai Marlos, tudo bem ?

Cara estou me questionando se você precisa mesmo de um recyclerview, será que você não quer usar um viewholder no lugar, acredito que seja mais simples de você manipular.

porque acha que o viewHolder seria melhor? porque as imagens estão vindo do servidor em json e estou listando para o usuario passar as imagens, nao pensei em outra maneira.

realmente com o viewholder resolvi meu problema, fui pesquisar e conseguir, obrigado pela atenção e pela ajuda.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.fragment_image_slider, container, false);
            viewPager = (ViewPager) v.findViewById(R.id.viewpager);
            lblCount = (TextView) v.findViewById(R.id.lbl_count);
            lblTitle = (TextView) v.findViewById(R.id.title);
            lblDate = (TextView) v.findViewById(R.id.date);
            botaoproximo = v.findViewById(R.id.btnproximo);
            botaovoltar = v.findViewById(R.id.btnvoltar);

        botaoproximo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(prox(+1),true);
            }
        });
        botaovoltar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(voltar(-1),true);
            }
        });
            images = (ArrayList<Image>) getArguments().getSerializable("images");
            selectedPosition = getArguments().getInt("position");

            Log.e(TAG, "position: " + selectedPosition);
            Log.e(TAG, "images size: " + images.size());

            myViewPagerAdapter = new MyViewPagerAdapter();
            viewPager.setAdapter(myViewPagerAdapter);
            viewPager.addOnPageChangeListener(viewPagerPageChangeListener);

            setCurrentItem(selectedPosition);

            return v;
        }
        private int prox(int i) {
            return viewPager.getCurrentItem() + i;
        }
        private int voltar(int i) {
            return viewPager.getCurrentItem()-1;
        }
        private void setCurrentItem(int position) {
            viewPager.setCurrentItem(position, false);
            displayMetaInfo(selectedPosition);
        }

        //  page change listener
        ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                displayMetaInfo(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        };

        private void displayMetaInfo(int position) {
            lblCount.setText((position + 1) + " of " + images.size());

            Image image = images.get(position);
            lblTitle.setText(image.getName());
            lblDate.setText(image.getTimestamp());
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        }

        //  adapter
        public class MyViewPagerAdapter extends PagerAdapter {

            private LayoutInflater layoutInflater;

            public MyViewPagerAdapter() {
            }

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

                layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View view = layoutInflater.inflate(R.layout.image_fullscreen_preview, container, false);

                ImageView imageViewPreview = (ImageView) view.findViewById(R.id.image_preview);

                Image image = images.get(position);

                Glide.with(getActivity()).load(image.getLarge())
                        .thumbnail(0.5f)
                        .crossFade()
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .into(imageViewPreview);

                container.addView(view);

                return view;
            }

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

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


            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView((View) object);
            }
            public void next_fragment(View view) {
                viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
            }

            public void previous_fragment(View view) {
                viewPager.setCurrentItem(viewPager.getCurrentItem()-1);
            }
        }
    }