Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove Certain TextViews From ArrayList

I am using RecyclerView to display an ArrayList and I plan on having alot of combos of TextViews so instead of making 10 layout files I just made one with ALL my TextViews.

Certain rows I want to display only some of the TextViews so I leave them blank (" ") but obviously the TextView still takes up that blank space.

So I think I must use setVisibility Gone for the blanks and must probably go under the onBindViewHolder but I am not sure how the if statement must 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);

    }
}
}
like image 518
Jacques Krause Avatar asked Jun 27 '26 22:06

Jacques Krause


1 Answers

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..

like image 133
Ahmad Nawaz Avatar answered Jun 30 '26 13:06

Ahmad Nawaz