2017-11-18 4 views
0

私は約12のCardViewを持っています。 「高」変数が真か偽であるかによって、ImageViewの可視性がGONEで設定されますが、下にスクロールしてスクロールしてImageViewウィジェットが消えると、最後のImageViewも表示されません。ここrecyclerViewで作業していないアイテムの表示

@Override 
    public void onBindViewHolder(ViewHolder viewHolder, int i) { 
     Currency currency = currencies.get(i); 

     Double valor_actual = currencies.get(i).getValores().get(0); 
     Double valor_anterior = currencies.get(i).getValores().get(1); 

     viewHolder.textValue.setText(valor_actual.toString()); 

     BigDecimal bigDecimal = null; 
     if (currency.getHigh()) { 
      bigDecimal = new BigDecimal(valor_actual).subtract(new BigDecimal(valor_anterior)); 
      viewHolder.textInfo.setTextColor(Color.parseColor("#ff669900")); 
      // doesn't work properly 
      viewHolder.imageDown.setVisibility(View.GONE); 
     } 
     if (!currency.getHigh()){ 
      bigDecimal = new BigDecimal(valor_anterior).subtract(new BigDecimal(valor_actual)); 
      viewHolder.textInfo.setTextColor(Color.parseColor("#ffcc0000")); 
      // doesn't work properly 
      viewHolder.imageUp.setVisibility(View.GONE); 
     } 

     String unidad_medida = currency.getUnidad_medida(); 
     if (bigDecimal != null) { 
      try { 
       StringBuilder sb = new StringBuilder(currencyFormat(bigDecimal)); 
       if (unidad_medida.equalsIgnoreCase("porcentaje")) { 
        sb.deleteCharAt(0); 
        sb.insert(0, "%"); 
       } 
       viewHolder.textInfo.setText(sb.toString()); 
      } catch (Exception e) { 
       Log.e(TAG, "Exception: " + e.getMessage()); 
      } 
     } 
     viewHolder.textName.setText(currency.getNombre()); 
    } 

enter image description here

素晴らしい作品が、私は第三CardViewをスクロールアップするために戻って下にスクロールしたときにImageViewのは表示されません。

enter image description here

答えて

2

あなたが必要Visible in else条件も設定します。実行時に可視性を設定している場合は、リストアイテムとしてそこにある各アイテムに対してこれを行います。

if (currency.getHigh()) { 
    bigDecimal = new BigDecimal(valor_actual).subtract(new BigDecimal(valor_anterior)); 
    viewHolder.textInfo.setTextColor(Color.parseColor("#ff669900")); 
    // doesn't work properly 
    viewHolder.imageDown.setVisibility(View.GONE); 
    viewHolder.imageUp.setVisibility(View.VISIBLE); 
} 
else { 
    bigDecimal = new BigDecimal(valor_anterior).subtract(new BigDecimal(valor_actual)); 
    viewHolder.textInfo.setTextColor(Color.parseColor("#ffcc0000")); 
    // doesn't work properly 
    viewHolder.imageDown.setVisibility(View.VISIBLE); 
    viewHolder.imageUp.setVisibility(View.GONE); 
} 
+0

それは働きます!ありがとう:D –

0
@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    Currency currency = currencies.get(i); 

    Double valor_actual = currencies.get(i).getValores().get(0); 
    Double valor_anterior = currencies.get(i).getValores().get(1); 

    viewHolder.textValue.setText(valor_actual.toString()); 

    BigDecimal bigDecimal = null; 
    if (currency.getHigh()) { 
     bigDecimal = new BigDecimal(valor_actual).subtract(new BigDecimal(valor_anterior)); 
     viewHolder.textInfo.setTextColor(Color.parseColor("#ff669900")); 

     viewHolder.imageDown.setVisibility(View.GONE); 
     viewHolder.imageUp.setVisibility(View.VISIBLE); 
    } else { 
     bigDecimal = new BigDecimal(valor_anterior).subtract(new BigDecimal(valor_actual)); 
     viewHolder.textInfo.setTextColor(Color.parseColor("#ffcc0000")); 

     viewHolder.imageUp.setVisibility(View.GONE); 
     viewHolder.imageDown.setVisibility(View.VISIBLE); 
    } 

    String unidad_medida = currency.getUnidad_medida(); 
    if (bigDecimal != null) { 
     try { 
      StringBuilder sb = new StringBuilder(currencyFormat(bigDecimal)); 
      if (unidad_medida.equalsIgnoreCase("porcentaje")) { 
       sb.deleteCharAt(0); 
       sb.insert(0, "%"); 
      } 
      viewHolder.textInfo.setText(sb.toString()); 
     } catch (Exception e) { 
      Log.e(TAG, "Exception: " + e.getMessage()); 
     } 
    } 
    viewHolder.textName.setText(currency.getNombre()); 
} 
0

の小さなセットのためBaseAdapterを使用してとても良いImageViewのかのTextView

かもしれビューの再利用可能なを使用します位置0のアイテムを表示するために使用されていますが、ポジション0のアイテムが表示されなくなった場合は、アイテムを位置5に表示するために再利用できます(この方法でリサイクルビューを使用すると、すでに作成されているが表示されていないビューを使用して作成)。

画像が表示されないというシナリオを考えてみましょう。位置0

アイテムアイコンをダウン示すべき位置5におけるアイコンやアイテムを表示すべきです。そして、あなたはrecyclerviewだから基本的にあなたがviewHolder.imageUp.setVisibility(View.GONE)とviewHolder.imageDown.setVisibility(View.GONE)を呼び出す終わるPOS 5.で表示ビューへのPOS 0用に作成されたビューを再利用したときにスクロールします。同じビューで

ソリューションのように、他のビューの可視性を操作することである。

viewHolder.imageUp.setVisibility(View.GONE); 

viewHolder.imageDown.setVisibility(View.VISIBLE); 
関連する問題