访问Recycler View的每个项目中的视图

时间:2017-04-17 16:38:25

标签: android android-recyclerview

我有一个Recycler视图,其中每个项目都有2个TextView和一个Switch View。在填充列表时,根据其中一个TextView的内容,我想让开关可见或不可见。

This is what I want:

enter image description here

This is what I am getting:

enter image description here

要设置切换的可见性,我们可以使用Switch.setVisibility(View.GONE)。但我不知道在哪里使用这行代码。

5 个答案:

答案 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);

}