Click on the Recycleview Item

Asked

Viewed 26 times

0

I have a project and use the Navigation Drawer As layout, and inflate all fragmentos, well there was the need to have RecycleView, in it I get the result done by a select, only I also need it to be clickable and take the result of the item clicked.

I’m failing to do with the RecycleView be clickable, searched but when inflate the fragment it error, follow codes.

Man Adapter:

public class AvaliaAdpter extends RecyclerView.Adapter<AvaliaAdpter.AvaliaHolder> {

    List<AvaliaViagem> listaAvalia;
    private OnItemClickListener mListener;

    public interface OnItemClickListener {
        void onItemClick(int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        mListener = listener;
    }

    public AvaliaAdpter(List<AvaliaViagem> listaAvalia) {
        this.listaAvalia = listaAvalia;
    }

    @NonNull
    @Override
    public AvaliaHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        View vista = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.lista_avalia, viewGroup, false);
        RecyclerView.LayoutParams layoutParams =
                new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        vista.setLayoutParams(layoutParams);
        return new AvaliaHolder(vista, mListener);
    }

    @Override
    public void onBindViewHolder(@NonNull AvaliaAdpter.AvaliaHolder avaliaHolder, int i) {

        avaliaHolder.txtHorarios.setText(listaAvalia.get(i).getHorarios().toString());
    }

    @Override
    public int getItemCount() {
        return listaAvalia.size();
    }

    public class AvaliaHolder extends RecyclerView.ViewHolder {

        TextView txtHorarios;

        public AvaliaHolder(@NonNull View itemView, final OnItemClickListener listener) {
            super(itemView);

            txtHorarios = (TextView) itemView.findViewById(R.id.txtAvalia);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (listener != null) {
                        int position = getAdapterPosition();
                        if (position != RecyclerView.NO_POSITION) {
                            listener.onItemClick(position);
                        }
                    }
                }
            });
        }
    }
}

And mine onCreateView in the Fragment:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_avalie_viagem, container, false);

        getActivity().setTitle("Avalie sua Viagem");

        txtAvalia = (TextView) view.findViewById(R.id.textoHorario);

        spinnerLinha = (Spinner) view.findViewById(R.id.spinner_avalia_linha);
        final ArrayAdapter adapterSpLinha = ArrayAdapter.createFromResource(getContext(), R.array.sp_linha, android.R.layout.simple_spinner_dropdown_item);
        adapterSpLinha.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerLinha.setAdapter(adapterSpLinha);

        rbIda = (RadioButton) view.findViewById(R.id.rbIda_avalia);
        rbVolta = (RadioButton) view.findViewById(R.id.rbVolta_avalia);

        listarAvalia = new ArrayList<>();

        botaoConsultar = view.findViewById(R.id.btnConsultar_avaliacao);

        recyclerAvalia = (RecyclerView) view.findViewById(R.id.idRecycler);
        recyclerAvalia.setLayoutManager(new LinearLayoutManager(this.getContext()));
        recyclerAvalia.setHasFixedSize(true);

        mAdapter.setOnItemClickListener(new AvaliaAdpter.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
                changeItem(position, "Clicado");
            }
        });

        request = Volley.newRequestQueue(getContext());

        botaoConsultar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                linha = spinnerLinha.getSelectedItem().toString();

                SimpleDateFormat formataData = new SimpleDateFormat("dd/MM/yyyy");
                Date data = new Date();
                String dataFormatada = formataData.format(data);
                String dataAtual = getWeek(dataFormatada);

                if (dataAtual.toString().equals("Domingo")) {
                    vDiaSemana = "1";
                } else if (dataAtual.toString().equals("Segunda-feira")) {
                    vDiaSemana = "2";
                } else if (dataAtual.toString().equals("Terça-feira")) {
                    vDiaSemana = "3";
                } else if (dataAtual.toString().equals("Quarta-feira")) {
                    vDiaSemana = "4";
                } else if (dataAtual.toString().equals("Quinta-feira")) {
                    vDiaSemana = "5";
                } else if (dataAtual.toString().equals("Sexta-feira")) {
                    vDiaSemana = "6";
                } else if (dataAtual.toString().equals("Sábado")) {
                    vDiaSemana = "7";
                }


                if (linha.toString().equals("Selecione a Linha")) {
                    vCidade = "0";
                } else if (linha.toString().equals("RECIFE X MACHADOS")) {
                    vCidade = "6";
                } else if (linha.toString().equals("RECIFE X TAQUARITINGA")) {
                    vCidade = "11";
                } else if (linha.toString().equals("RECIFE X SANTA CRUZ")) {
                    vCidade = "12";
                } else if (linha.toString().equals("TIMBAÚBA X ITAMBÉ")) {
                    vCidade = "21";
                } else if (linha.toString().equals("RECIFE X CARPINA")) {
                    vCidade = "22";
                } else if (linha.toString().equals("RECIFE X FEIRA NOVA")) {
                    vCidade = "23";
                } else if (linha.toString().equals("RECIFE X LIMOEIRO")) {
                    vCidade = "25";
                } else if (linha.toString().equals("GOIANA X TIMBAÚBA")) {
                    vCidade = "28";
                } else if (linha.toString().equals("GOIANA X TIMBAÚBA(TUPAOCA)")) {
                    vCidade = "29";
                } else if (linha.toString().equals("RECIFE X NAZARÉ")) {
                    vCidade = "30";
                } else if (linha.toString().equals("RECIFE X PAUDALHO")) {
                    vCidade = "31";
                } else if (linha.toString().equals("CARPINA X TIMBAÚBA")) {
                    vCidade = "32";
                } else if (linha.toString().equals("RECIFE X LIMOEIRO S. EXP")) {
                    vCidade = "36";
                } else if (linha.toString().equals("RECIFE X SURUBIM")) {
                    vCidade = "39";
                } else if (linha.toString().equals("RECIFE X TRACUNHAÉM")) {
                    vCidade = "43";
                } else if (linha.toString().equals("RECIFE X SÃO VICENTE(S.VICÊNCIA)")) {
                    vCidade = "47";
                } else if (linha.toString().equals("RECIFE X SÃO VICENTE(TIMBAÚBA)")) {
                    vCidade = "48";
                } else if (linha.toString().equals("RECIFE X SÃO VICENTE(B.AIRES)")) {
                    vCidade = "50";
                } else if (linha.toString().equals("RECIFE X TIMBAÚBA")) {
                    vCidade = "51";
                } else if (linha.toString().equals("RECIFE X SALGADINHO")) {
                    vCidade = "53";
                } else if (linha.toString().equals("RECIFE X UMBURETAMA")) {
                    vCidade = "54";
                } else if (linha.toString().equals("RECIFE X LAGOA DO CARRO")) {
                    vCidade = "55";
                } else if (linha.toString().equals("RECIFE X LAGOA DE ITAENGA")) {
                    vCidade = "56";
                } else if (linha.toString().equals("RECIFE X BUENOS AIRES")) {
                    vCidade = "57";
                } else if (linha.toString().equals("RECIFE X ALIANÇA")) {
                    vCidade = "58";
                }

                if (rbIda.isChecked()) {
                    vSentido = "I";
                } else if (rbVolta.isChecked()) {
                    vSentido = "V";
                }

                if (linha.toString().equals("Selecione a Linha")) {
                    Toast.makeText(getContext(), "Favor Selecionar uma Linha", Toast.LENGTH_LONG).show();
                } else if (!vSentido.isEmpty()) {
                    carregarWEBService();
                }

            }
        });

        return view;
    }

If I comment on this excerpt from onCreateView it inflates more also I can not test the click:

mAdapter.setOnItemClickListener(new AvaliaAdpter.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
                changeItem(position, "Clicado");
            }
        });

What will be.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.