所以我想在stok <= limit
时将颜色设置为红色,看起来正常onbindviewholder。但在执行搜索时,搜索删除时的第一行数据会变为红色。任何解决方案?first load,search the text with red one,after searching, first data went red
Context context;
List<Obat> obatList;
List<Obat> obatTempList;
int limit, stok;
public ObatAdapter(Context context, List<Obat> TempList) {
this.obatList = TempList;
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.obat_list_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
Obat obat = obatList.get(position);
holder.qty.setText(obat.getStok());
holder.nama.setText(obat.getNama());
holder.harga.setText("Rp. " + obat.getHarga());
holder.satuan.setText(obat.getSatuan());
limit = Integer.parseInt(obat.getLimit());
stok = Integer.valueOf(obat.getStok());
if (stok <= limit) {
holder.onklik.setBackgroundColor(Color.parseColor("#f44242"));
}
holder.onklik.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, MainTouchMenu.class);
i.putExtra("nama", obat.getNama().toString());
i.putExtra("stok", obat.getStok().toString());
i.putExtra("harga", obat.getHarga().toString());
i.putExtra("satuan", obat.getSatuan().toString());
i.putExtra("limit", obat.getLimit().toString());
context.startActivity(i);
}
});
holder.onklik.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Intent i = new Intent(context, MainHoldMenu.class);
i.putExtra("nama", obat.getNama().toString());
i.putExtra("stok", obat.getStok().toString());
i.putExtra("harga", obat.getHarga().toString());
i.putExtra("satuan", obat.getSatuan().toString());
i.putExtra("limit", obat.getLimit().toString());
context.startActivity(i);
return false;
}
});
}
@Override
public int getItemCount() {
return obatList.size();
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
final FilterResults oReturn = new FilterResults();
final List<Obat> results = new ArrayList<Obat>();
if (obatTempList == null) {
obatTempList = obatList;
}
if (constraint != null) {
if (obatTempList != null & obatTempList.size() > 0) {
for (final Obat obat : obatTempList) {
if (obat.getNama().toLowerCase().contains(constraint.toString())) {
results.add(obat);
}
}
}
oReturn.values = results;
}
return oReturn;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
obatList = (List<Obat>) results.values;
notifyDataSetChanged();
}
};
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView nama, harga, qty, satuan;
RelativeLayout onklik;
public MyViewHolder(View itemView) {
super(itemView);
nama = itemView.findViewById(R.id.nama);
harga = itemView.findViewById(R.id.harga);
qty = itemView.findViewById(R.id.qty);
onklik = itemView.findViewById(R.id.onklik);
satuan = itemView.findViewById(R.id.satuan);
}
}
答案 0 :(得分:0)
试试这种方式
int statuscolor = 0;
if (stok <= limit) {
statuscolor = Color.parseColor("#f44242");
}
然后在itemView背景中设置颜色
holder.itemView.setBackgroundColor(statuscolor);
我没有测试过此代码,请告诉我它是否有效