我有一个Recycler视图,其中每个项目都有2个TextView和一个Switch View。在填充列表时,根据其中一个TextView的内容,我想让开关可见或不可见。
This is what I want:
This is what I am getting:
要设置切换的可见性,我们可以使用Switch.setVisibility(View.GONE)
。但我不知道在哪里使用这行代码。
答案 0 :(得分: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());
}
答案 1 :(得分:2)
您必须在RecyclerAdapter类的onBindViewHolder()方法中保持可见性
if (showSwitch) {
viewHolder.yourSwitch.setVisibility(View.VISIBLE);
} else {
viewHolder.yourSwitch.setVisibility(View.GONE);
}
答案 2 :(得分: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);
}
答案 3 :(得分: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);
}
}
答案 4 :(得分: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);
}