【问题标题】:Remove Certain TextViews From ArrayList从 ArrayList 中删除某些 TextView
【发布时间】:2015-09-15 12:11:44
【问题描述】:

我正在使用RecyclerView 来显示ArrayList,并且我计划有很多TextViews 的组合,所以我没有制作10 个布局文件,而是用我所有的TextViews 制作了一个。

某些行我只想显示TextViews 中的一部分,所以我将它们留空(“”),但显然TextView 仍会占用该空白空间。

所以我认为我必须使用 setVisibility Gone 作为空白,并且可能必须在 onBindViewHolder 下,但我不确定 if 语句的外观。

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {

List<AdapterData> mItems;

public Adapter() {
    super();
    mItems = new ArrayList<>();
    AdapterData data = new AdapterData();
    data.setName("dummy text");
    data.setNameTwo("");
    data.setNameThree("");

    mItems.add(data);

    data = new AdapterData();
    data.setName("dummy text");
    data.setNameTwo("dummy text");
    data.setNameThree("");
    mItems.add(data);

    data = new AdapterData();
    data.setName("");
    data.setNameTwo("dummy text");
    data.setNameThree("");
    mItems.add(data);

    data = new AdapterData();
    data.setName("");
    data.setNameTwo("dummy text");
    data.setNameThree("dummy text");
    mItems.add(data);

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.recycler_view_card_item, viewGroup, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
    AdapterData data = mItems.get(i);
    viewHolder.mName.setText(data.getName());
    viewHolder.mNameTwo.setText(data.getNameTwo());
    viewHolder.mNameThree.setText(data.getNameThree());
}


@Override
public int getItemCount() {

    return mItems.size();
}

class ViewHolder extends RecyclerView.ViewHolder{

    public TextView mName;
    public TextView mNameTwo;
    public TextView mNameThree;


    public ViewHolder(View itemView) {
        super(itemView);
        mName = (TextView)itemView.findViewById(R.id.layoutName);
        mNameTwo = (TextView)itemView.findViewById(R.id.layoutNameTwo);
        mNameThree = (TextView)itemView.findViewById(R.id.layoutNameThree);

    }
}
}

【问题讨论】:

    标签: java android arraylist android-recyclerview


    【解决方案1】:

    使用TextUtils.isEmpty

    if(TextUtils.isEmpty(data.getName())){
    viewHolder.mName.setVisibility(GONE);
    }else{
     viewHolder.mName.setVisibility(VISIBLE);
     }
    
    if(TextUtils.isEmpty(data.getNameTwo())){
    viewHolder. mNameTwo.setVisibility(GONE);
    }else{
     viewHolder.mNameTwo.setVisibility(VISIBLE);
     }
    

    等等……

    【讨论】:

    • 不要忘记“重新显示”视图。例如 if(...){...}else{viewHolder.mName.setVisibility(View.VISIBLE)}
    • isEmpty 也会检查这个。如果不写data.setName("");也可以。
    猜你喜欢
    • 2016-07-01
    • 2016-03-08
    • 2011-03-17
    • 2019-04-09
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多