Custom ListView with CheckBox
Hi,
Layout:
main.xml
MultipleCheckerActivity.java
EmployeeAdapter.java
EmployeeModel.java
<Relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/main_btn_data" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:onclick="onClickData" android:text="@string/hello" /> <Listview android:id="@+id/listView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/main_btn_data" android:layout_alignparentleft="true" android:layout_alignparenttop="true" /> </Relativelayout>
<Relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <Textview android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/checkBox1" android:layout_alignbottom="@+id/checkBox1" android:layout_alignparentleft="true" android:text="TextView" android:textappearance="?android:attr/textAppearanceLarge" /> <Checkbox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparenttop="true" /> </Relativelayout>
MultipleCheckerActivity.java
public class MultipleCheckerActivity extends Activity { private ListView list; private Listemployee; private EmployeeAdapter adapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); employee = new ArrayList (); fillData("Nishant", "Shah", 25, false); fillData("Chirag", "Shah", 22, false); fillData("Utsav", "Kapuriya", 22, false); list = (ListView) findViewById(R.id.listView1); adapter = new EmployeeAdapter(getApplicationContext(), R.layout.row_main, employee); list.setAdapter(adapter); } private void fillData ( String name, String lastName, int age, boolean isSelected ) { final EmployeeModel model = new EmployeeModel(); model.setName(name); model.setLastName(lastName); model.setAge(age); model.setSelected(isSelected); employee.add(model); } public void onClickData ( View view ) { List empData = adapter.employeeData; System.out.println("Total Size :" + empData.size()); for (EmployeeModel employeeModel : empData) { if ( employeeModel.isSelected() ) { Log.e("Checker", employeeModel.getName()); } } } }
EmployeeAdapter.java
public class EmployeeAdapter extends BaseAdapter { public ListemployeeData; private Context mContext; private LayoutInflater mInflater; public EmployeeAdapter(Context context, int textViewResourceId, List objects) { this.employeeData = objects; this.mContext = context; mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.row_main, null); holder.txtName = (TextView) convertView.findViewById(R.id.textView1); holder.chkTick = (CheckBox) convertView.findViewById(R.id.checkBox1); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final int pos = position; holder.txtName.setText(employeeData.get(position).getName() + " " + employeeData.get(position).getLastName()); holder.chkTick.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { employeeData.get(pos).setSelected(isChecked); } }); return convertView; } static class ViewHolder { TextView txtName; CheckBox chkTick; } public int getCount() { return employeeData.size(); } public EmployeeModel getItem(int position) { return employeeData.get(position); } public long getItemId(int position) { return 0; } }
EmployeeModel.java
public class EmployeeModel { private String name; private int age; private String lastName; private boolean selected; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } }
Hi! Can you please demonstrate how we can get a list of all checked items? I would very much appreciate it. Thank you!
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteEdit CheckBox for ListView
ReplyDeletethank you. it helped me a lot.
ReplyDeleteand also, i have a dbt. can we use an array here instead of collection?
Great Job done by your end, it's very helpful for me, I want selection of checkBox on ListView Click, Is there any way.
ReplyDeleteNaveen just use row of listview use View.OnClickListener then it will be work on any wehere you click on list will check on particular row.
DeleteLearn AWS in cognex technology because cognex is the best AWS Training in Chennai
ReplyDeleteHello,
ReplyDeleteCan we use array here instead of collection?
Please reply