【发布时间】:2019-04-30 05:12:49
【问题描述】:
在我的 android 应用程序中,我添加了一个 recyclerview 来显示打印项目列表。每个项目视图代表一个要打印的信息,并且还有一个用于打印的按钮。打印按钮颜色在打印前为浅蓝色,打印后变为黄色。 (打印代码会在这里执行)
所以,我点击了第一个打印按钮并打印,按钮颜色也变成了黄色。到这里还是可以的。但是,问题是滚动到一段距离后,我发现一些按钮的颜色也变成了黄色,尽管它没有打印出来。
这是我的 ViewHolder,我在 onClick() 方法中更改了打印按钮的颜色。
public class IB17InventorySearchViewHolder extends BaseViewHolder<IB17InventorySearchResponse> {
@BindView(R.id.tv_location)
TextView tvLocation;
@BindView(R.id.tv_tuNo)
TextView tvTuNo;
@BindView(R.id.tv_sku)
TextView tvSku;
@BindView(R.id.tv_lot_no)
TextView tvLotNo;
@BindView(R.id.tv_qty)
TextView tvQty;
@BindView(R.id.btn_print)
Button btnPrint;
IB17InventorySearchResponse inventorySearchResponse;
private Activity mActivity;
public IB17InventorySearchViewHolder(View itemView, Activity mActivity) {
super(itemView);
this.mActivity = mActivity;
}
@Override
public void setData(IB17InventorySearchResponse data) {
this.inventorySearchResponse = data;
tvLocation.setText(data.getLoccode());
tvTuNo.setText(data.getTuno1());
tvSku.setText(data.getSkucode());
tvLotNo.setText(data.getLot4());
tvQty.setText(String.valueOf(data.getQty()));
btnPrint.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_print) {
if(BluetoothPrintHelper.printSucess)
btnPrint.setBackgroundColor(Color.parseColor("#fff111"));
} else {
// for whole itemview click
}
}
}`
这是我的适配器
public class IB17InventorySearchRecyAdapter extends BaseRecyclerAdapter<BaseViewHolder, BaseModel> {
private List<IB17InventorySearchResponse> searchResponseList;
public Context context;
public IB17InventorySearchRecyAdapter(Context context, List<IB17InventorySearchResponse> searchResponseList) {
super(context);
this.context = context;
this.searchResponseList = searchResponseList;
}
@NonNull
@Override
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.ib17_search_result_row, parent, false);
return new IB17InventorySearchViewHolder(view, (Activity) context);
}
@Override
public void onBindViewHolder(BaseViewHolder holder, final int position) {
holder.setData(searchResponseList.get(position));
}
@Override
public int getItemCount() {
return searchResponseList.size();
}}
我的问题是我应该如何在不影响其他 itemview 子项(viewholder 按钮)的情况下更改 recyclerview 中查看器的子视图(按钮)颜色任何想法或替代方法都在欣赏!
【问题讨论】:
-
添加布尔标志,用于存储按钮的状态并根据其值设置按钮的颜色。
-
后来问了这个问题,我发现了一篇很棒的文章,用于在回收器视图中处理视图状态android.jlelse.eu/…
标签: android android-recyclerview