1
我已經創建了一個回收視圖適配器。根據適配器中的項目,我試圖更改該行的UI。首次加載屏幕時,UI將正確呈現。但是一旦我滾動瀏覽器,屏幕即使對於不應該擁有的行也會更新。 下面是代碼:Recycler視圖列表適配器更新用戶界面不正確
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
final OrderItem order = mItems.get(i);
viewHolder.tvName.setText(getCustomers().get(order.getmConsumerId()).getProfile().getFirstName().toUpperCase());
viewHolder.tvDelType.setText(getDeliveryType(order.getmDeliveryType()));
viewHolder.tvTime.setText(formatTime(order.getmETATime()));//format time before present
viewHolder.tvAmt.setText("Rs " + order.getmAmount());
viewHolder.rlvName.setTitleText(order.getmConsumerId().substring(0, 1));
viewHolder.rlvName.setTitleSize(82f);
viewHolder.tvDetails.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, OrderDetailsActivity.class);
Gson gson = new Gson();
String ord = gson.toJson(order);
String user = gson.toJson(getCustomers().get(order.getmConsumerId()));
intent.putExtra("orderItem", ord);
intent.putExtra("user", user);
context.startActivity(intent);
}
});
setListeners(viewHolder, order, i);
//setStatus(viewHolder,order,i);
if(!order.getmOrderStatus().equals(Constants.ENUM_ORDERS_STATUS_PENDING))
{
viewHolder.tvOrderStatus.setText((order.getmOrderStatus().toUpperCase()));
viewHolder.tvOrderStatus.setVisibility(View.VISIBLE);
viewHolder.llButtons.setVisibility(View.GONE);
}
//viewHolder.rlvName.setBackgroundColor(Color.parseColor("FF0000"));
}
因此,基於我的訂單具有的價值,我需要改變該行的UI。滾動後,它會更改不應該有的行的值。
請建議。
謝謝!有效 – jetty