Hello friends, I am working on filling a recyclerview. I do this using volley, consuming a rest service, until here everything is fine, but I have to change the color of the cardview depending on a data that is sent to me from the service. How can I do this, friends?
Deputy code:
Adapter
public class OrdenesAdapter extends RecyclerView.Adapter<OrdenesAdapter.OrdenesViewHolder> {
private OnItemClickListener mlistener;
ArrayList<Ordenes> ordenesArrayList;
public interface OnItemClickListener{
void onItemClick(int position);
}
List<Ordenes> listaOrdenes;
public void setOnItemClickListener(OnItemClickListener listener){
mlistener = listener;
}
public OrdenesAdapter(List<Ordenes> listaOrdenes){
this.listaOrdenes = listaOrdenes;
this.ordenesArrayList = new ArrayList<Ordenes>();
this.ordenesArrayList.addAll(listaOrdenes);
}
@Override
public OrdenesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View vista = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_asignadas, parent, false);
RecyclerView.LayoutParams layoutParams = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
vista.setLayoutParams(layoutParams);
return new OrdenesViewHolder(vista);
}
@Override
public void onBindViewHolder(OrdenesViewHolder holder, int position) {
holder.textCompanyResumenOrdenes.setText(listaOrdenes.get(position).getCompany().toString());
holder.textNoOrdenResumenOrdenes.setText(listaOrdenes.get(position).getCounter().toString());
holder.textTimeResumenOrdenes.setText(listaOrdenes.get(position).getStreet_destino().toString());
holder.textCobroResumen.setText(listaOrdenes.get(position).getAmount().toString());
holder.textMinAproxResumen.setText(listaOrdenes.get(position).getCreated().toString());
}
@Override
public int getItemCount() {
return listaOrdenes.size();
}
public class OrdenesViewHolder extends RecyclerView.ViewHolder{
TextView textCompanyResumenOrdenes, textNoOrdenResumenOrdenes, textTimeResumenOrdenes, textCobroResumen, textMinAproxResumen, textTimeTrascurridoResumen;
public OrdenesViewHolder(View itemView) {
super(itemView);
textCompanyResumenOrdenes = (TextView) itemView.findViewById(R.id.textCompanyResumenOrdenes);
textNoOrdenResumenOrdenes = (TextView) itemView.findViewById(R.id.textNoOrdenResumenOrdenes);
textTimeResumenOrdenes = (TextView) itemView.findViewById(R.id.textTimeResumenOrdenes);
textCobroResumen = (TextView) itemView.findViewById(R.id.textCobroResumen);
textMinAproxResumen = (TextView) itemView.findViewById(R.id.textMinAproxResumen);
textTimeTrascurridoResumen = (TextView) itemView.findViewById(R.id.textTimeTrascurridoResumen);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mlistener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
mlistener.onItemClick(position);
}
}
}
});
}
}
public void setFilter (String counter){
counter = counter.toLowerCase(Locale.getDefault());
listaOrdenes.clear();
if (counter.length() == 0){
listaOrdenes.addAll(ordenesArrayList);
}else {
for(Ordenes PL : ordenesArrayList){
if(PL.getCounter().toLowerCase(Locale.getDefault()).contains(counter)){
listaOrdenes.add(PL);
}
}
}
notifyDataSetChanged();
}
}
I prepare the list
listaOrdenes = new ArrayList<>();
thiscontext = container.getContext();
recyclerOrdenes = (RecyclerView) view.findViewById(R.id.recyclerOrdenesResumen);
I fill the list with the opted data
adapter = new OrdenesAdapter(listaOrdenes);
adapter.notifyDataSetChanged();
recyclerOrdenes.setAdapter(adapter);
Result:
Each cardview must change color according to some data that is sent
Thank you in advance =)