2016-02-13 47 views
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。滾動後,它會更改不應該有的行的值。

請建議。

回答

1

由於recyler查看RAM管理,recyler視圖嘗試從緩存中加載卡片,並且由於recyler視圖的緩存,所以項目加載不正確。 爲了防止這一點,你必須添加一個elseif這樣的:

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); 
} 
else 
{ 
    //The Default Item View Settings Here... 
} 
+0

謝謝!有效 – jetty