Skip to content Skip to sidebar Skip to footer

How To Display Checkbox On Every Entry In A ListView

From this Activity i get text from textField and display it in a ListView. Now i want to to add check box on every entry in a listView Cell and also like to know how to display mor

Solution 1:

You have to use a BaseAdapter and some Getter/Setter methods to add multiple texts/images/other UI elements in each item of your list view.

You have to implement multiple things to get this result. Here they are --

  1. Create a Custom Layout for each item of your ListView.

listview_item_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

    <TextView
        android:id="@+id/layout_textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:layout_marginRight="5dip"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/layout_textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:layout_marginLeft="5dip"
        android:textStyle="bold"/>

            <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:id="@+id/checkbox"
            android:text="Test"/>

</LinearLayout>
  1. Create a custom class and add some Getter/Setter methods.

ListRowItem.java

public class ListRowItem implements Serializable{
String carrier,number;

public String getCarrier(){
    return carrier;
}

public String getNumber(){
    return number;
}

public void setCarrier(String ba_carrier){
    carrier = ba_carrier;
}

public void setNumber(String ba_number){
    number = ba_number;
}
}
  1. Create a custom class and extend the BaseAdapter class.

    public class MyBaseAdapter extends BaseAdapter {
    
    public Context ba_context;
    public ArrayList<ListRowItem> listitem = new ArrayList<>();
    public LayoutInflater inflater;
    ListRowItem currentlistitem;
    
    public MyBaseAdapter(Context ma_context, ArrayList<ListRowItem> ma_listitem) {
    super();
    this.ba_context = ma_context;
    this.listitem = ma_listitem;
    
    inflater = (LayoutInflater) ba_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    
    @Override
    public int getCount() {
    return this.listitem.size();
    }
    
    @Override
    public Object getItem(int position) {
    return this.listitem.get(position);
    }
    
    @Override
    public long getItemId(int position) {
    return (long) position;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    
    if (convertView == null)
        vi = inflater.inflate(R.layout.listview_item_layout, parent, false);
    
    TextView carrier = (TextView) vi.findViewById(R.id.layout_textview1);
    TextView number = (TextView) vi.findViewById(R.id.layout_textview2);
    
    currentlistitem = listitem.get(position);
    
    String str_carrier = currentlistitem.getCarrier();
    String str_number = currentlistitem.getNumber();
    
    carrier.setText(str_carrier);
    number.setText(str_number);
    
    return vi;
    }
    }
    
  2. Finally, populate your ArrayList and set the Adapter in your MainActivity.

    ArrayList<ListRowItem> listitem = new ArrayList<>();
    Context context = TestActivity.this;
    MyBaseAdapter baseAdapter;
    
    ListRowItem lr = new ListRowItem();
    lr.setNumber(number);
    lr.setCarrier(carrier);
    
    listitem.add(lr);
    
    baseAdapter = new MyBaseAdapter(context,listitem);
    
    setContentView(R.layout.activity_test);
    listView = (ListView) findViewById(R.id.list_view);
    listView.setAdapter(baseAdapter);
    

Hope this helps!!


Post a Comment for "How To Display Checkbox On Every Entry In A ListView"