2017-04-17 9 views
0

私はRecyclerビューを持っていますが、各項目には2つのTextViewと1つのSwitch Viewがあります。 TextViewの内容に基づいてリストを作成する際に、スイッチを表示または非表示にしたいと考えています。Recyclerビューの各項目のビューへのアクセス

This is what I want: 

enter image description here

This is what I am getting: 

enter image description here

スイッチの可視性を設定するには、我々はSwitch.setVisibility(View.GONE)を使用することができます。しかし、私はこのコード行をどこで使うべきかわかりません。あなたはRecyclerAdapterクラスのonBindViewHolder()メソッド

if (showSwitch) { 
viewHolder.yourSwitch.setVisibility(View.VISIBLE); 
} else { 
viewHolder.yourSwitch.setVisibility(View.GONE); 
} 
+1

は、ここにあなたのアダプタと活動 –

+1

アダプタをあなたのコードを置きます。それはうまくいった。これらのオーバーロードされたメソッドがレイ・マンという言葉で正確に何をするのか説明できますか? –

答えて

4

変更での視認性を維持するために、あなたのアダプタ上でこのメソッド持って

+0

おかげ

@Override public void onBindViewHolder(MyViewHolder holder, int position) { LaunSubsItem launSubsItem = laundrySubsList.get(position); holder.tvWasherName.setText(launSubsItem.getDescription()); holder.tvWasherStatTime.setText(launSubsItem.getTime()); if (launSubsItem.getTime().contains("Available")) holder.switchSubs.setVisibility(View.GONE); else holder.switchSubs.setVisibility(View.VISIBLE); } 

2

@Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     LaunSubsItem launSubsItem = laundrySubsList.get(position); 
     if(your_condition_here){ 
     holder. switchSubs.setVisibility(View.GONE); 
     } 
     holder.tvWasherName.setText(launSubsItem.getDescription()); 
     holder.tvWasherStatTime.setText(launSubsItem.getTime()); 

    } 
1
@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    LaunSubsItem launSubsItem = laundrySubsList.get(position); 
    holder.tvWasherName.setText(launSubsItem.getDescription()); 
    holder.tvWasherStatTime.setText(launSubsItem.getTime()); 
    // Add this to your Adapter 
    holder.switchSubs.setVisibility(tvWasherStatTime.getText().toString().contains("Available") ? View.GONE : View.VISIBLE); 
} 
1
@Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     LaunSubsItem launSubsItem = laundrySubsList.get(position); 
     holder.tvWasherName.setText(launSubsItem.getDescription()); 
     holder.tvWasherStatTime.setText(launSubsItem.getTime()); 
     if(launSubsItem.getTime().equals("Available")){ 
      viewHolder.switchSubs.setVisibility(View.GONE); 
     } else { 
     viewHolder.switchSubs.setVisibility(View.VISIBLE); 
     } 
    } 
1

は、以下のようにあなたのonBindViewHolderを更新します:

https://pastebin.com/cKgyEh1u フラグメント:https://pastebin.com/a9pfks3g
関連する問題