2017-04-17 63 views
0

我有一個Recycler視圖,其每個項目都有2個TextView和一個Switch View。在填充列表的同時,根據其中一個TextView的內容,我想讓開關可見或不可見。在Recycler View的每個項目中訪問視圖

This is what I want: 

enter image description here

This is what I am getting: 

enter image description here

要設置開關的知名度,我們可以使用Switch.setVisibility(View.GONE)。但我不知道在哪裏使用這行代碼。

+1

把這裏的代碼,你的適配器和活動 –

+1

適配器:https://pastebin.com/cKgyEh1u 片段:https://pastebin.com/a9pfks3g –

回答

4

更改這個方法您的適配器的方法:

@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()); 

    } 
+0

感謝。這工作。你能以平信徒的語言解釋這些重載方法到底做了什麼嗎? –

2

你必須保持在onBindViewHolder(知名度)RecyclerAdapter類

if (showSwitch) { 
viewHolder.yourSwitch.setVisibility(View.VISIBLE); 
} else { 
viewHolder.yourSwitch.setVisibility(View.GONE); 
} 
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

@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); 

} 
相關問題