2017-04-19 74 views
1

我有一個ViewHolder模式的RecyclerView適配器。我在我的佈局中有5個ImageView,我需要根據服務器的響應來控制可見性。我得到的迴應是逗號分隔的字符串(例如:1,4,3)。在這種情況下,我必須顯示第1,第4和第3張圖像。ViewHolder image setVisibility for for loop

圖像視圖的佈局是:

<LinearLayout 
      android:id="@+id/ll_call_badge" 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:layout_below="@+id/text_exp" 
      android:visibility="visible"> 
      <ImageView 
       android:id="@+id/equity_badge" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:src="@mipmap/equity_icon" 
       android:layout_marginEnd="5dp" 
       android:visibility="gone"/> 
      <ImageView 
       android:id="@+id/futures_badge" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:src="@mipmap/futures_icon" 
       android:layout_marginEnd="5dp" 
       android:visibility="gone"/> 
      <ImageView 
       android:id="@+id/options_badge" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:src="@mipmap/options_icon" 
       android:layout_marginEnd="5dp" 
       android:visibility="gone"/> 
      <ImageView 
       android:id="@+id/commodity_badge" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:src="@mipmap/commodity_icon" 
       android:layout_marginEnd="5dp" 
       android:visibility="gone"/> 
      <ImageView 
       android:id="@+id/currency_badge" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:src="@mipmap/currency_icon" 
       android:layout_marginEnd="5dp" 
       android:visibility="gone"/> 
     </LinearLayout> 

我設置的圖像的可視性如下

//analystList[position].getAnalystCallTypes() gives the comma seperated string(eg. 1, 3) 
String[] splitCallType = analystList[position].getAnalystCallTypes().trim().split(",\\s+"); 
     for (int i = 0; i<splitCallType.length; i++) { 
       setCallTypeBadge(holder, splitCallType[i]); 
     } 

private void setCallTypeBadge(ViewHolder holder, String position) { 
    switch (position) { 
     case "1": 
      holder.equityBadge.setVisibility(View.VISIBLE); 
      break; 
     case "2": 
      holder.futuresBadge.setVisibility(View.VISIBLE); 
      break; 
     case "3": 
      holder.optionsBadge.setVisibility(View.VISIBLE); 
      break; 
     case "4": 
      holder.commodityBadge.setVisibility(View.VISIBLE); 
      break; 
     case "5": 
      holder.currencyBadge.setVisibility(View.VISIBLE); 
      break; 
    } 
    /*if (position.equalsIgnoreCase("1")){ 
     holder.equityBadge.setVisibility(View.VISIBLE); 
    } 
    if (position.equalsIgnoreCase("2")){ 
     holder.futuresBadge.setVisibility(View.VISIBLE); 
    } 
    if (position.equalsIgnoreCase("3")){ 
     holder.optionsBadge.setVisibility(View.VISIBLE); 
    } 
    if (position.equalsIgnoreCase("4")){ 
     holder.commodityBadge.setVisibility(View.VISIBLE); 
    } 
    if (position.equalsIgnoreCase("5")){ 
     holder.currencyBadge.setVisibility(View.VISIBLE); 
    }*/ 
} 

的問題是,它僅設置第一元件的可見性在迴應中。即如果字符串是1,2,3,它會將1的可見性設置爲可見,但不是2和3.

+0

你需要一個一個地或同時顯示他們嗎? – Mike

+0

@Mike我需要在同一時間顯示他們 –

+0

然後我的回答已經寫在下面由Suyash – Mike

回答

0

爲什麼將LinearLayout的高度和寬度設置爲20dp?根據佈局方向,它們中的哪一個至少應該是100dp/match_parent?

+1

謝謝!這是一個愚蠢的錯誤。 –