我有一個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.
你需要一個一個地或同時顯示他們嗎? – Mike
@Mike我需要在同一時間顯示他們 –
然後我的回答已經寫在下面由Suyash – Mike