Remove specific text objects from ArrayList

I use RecyclerView

to display ArrayList

and I plan on having a lot of combos TextViews

, so instead of doing 10 layout files, I just made one with all mine TextViews

.

On some lines, I only want to display some of them TextViews

, so I leave them blank (""), but obviously TextView

still occupies that blank space.

So I think I should use setVisibility Gone for spaces and should probably go under onBindViewHolder

, but I'm not sure how the if statement should look.

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

    }
}
}

      

+3


source to share


1 answer


Use 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);
 }

      



and soo on ..

+1


source







All Articles