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.
The variable
mAdapter
was initialized?– ramaral
Had not initialized, then initialized with my list. fragment was inflated plus click is not working.
– Ari Melo
Behold What is the right approach to get the click/position in Recyclerview?.
– ramaral
Bro got it, now how do I get the value of
TextView
of each line ofRecycleView
?– Ari Melo
I did, I used
minhalista.get(posicao).getvalor();
, vlw even;– Ari Melo