Use items from my Adapter

0

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 =)

    
asked by Alfredo Hernández 02.05.2018 в 20:19
source

1 answer

0

In onBindViewHolder get a string, for example:

String clave = listaOrdenes.get(position).getCompany().toString();

Then you compare, if you match the color to the cardView:

if (clave.equals("Company 1")){
            holder.itemView.setBackgroundColor(Color.parseColor("#FFDF618C"));
            //puede ser necesario cambiar el fondo de los textViews:
            holder.textNoOrdenResumenOrdenes.setBackgroundColor(Color.parseColor("#FFDF618C"));  // color rojo
            holder.textTimeResumenOrdenes.setBackgroundColor(Color.parseColor("#FFDF618C"));
        } else if (clave...
    
answered by 03.05.2018 / 00:08
source