An example analysis of checkbox in listView programming
- 2020-12-22 17:46:13
- OfStack
This article illustrates the checkbox usage in listView programming. To share for your reference, the details are as follows:
We often use checkbox in listView. If you don't apply it directly, the OnItemClickListener event in ListView will conflict with the selection event in checkbox. How do you handle this? Code directly.
list_item. xml code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_while">
<TextView
android:id="@+id/txt_add_note_tag_list_name"
android:layout_height="50dp"
android:layout_width="fill_parent"
android:gravity="center_vertical"
android:textColor="@color/color_black"
android:layout_marginLeft="8dp"
/>
<CheckBox
android:id="@+id/chk_add_note_tag_list_chk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_alignParentRight="true"
android:layout_marginRight="8dp"
android:focusable="false" <!-- This must be added, otherwise there will be conflict -->
android:clickable="false" <!-- This must be added, otherwise there will be conflict -->
/>
</RelativeLayout>
BaseAdapter. java code:
package cg.guangda.androidnote;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cg.guangda.androidnote.Model.noteTag;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
public class Add_note_tag_list_BaseAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<noteTag> list_notetag_date;
// Defines whether multiple checkboxes are selected
public static Map<Integer, Boolean> isSelected;
public Add_note_tag_list_BaseAdapter(Context context,List<noteTag> list_notetag_date)
{
this.inflater = LayoutInflater.from(context);
this.list_notetag_date = list_notetag_date;
// Define here isSelected this map Is to record each listitem And the initial states are all false .
isSelected = new HashMap<Integer, Boolean>();
for (int i = 0; i < list_notetag_date.size(); i++) {
isSelected.put(i, false);
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list_notetag_date.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list_notetag_date.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
add_note_noteTag notetag = null;
if(convertView==null)
{
convertView = inflater.inflate(R.layout.add_note_tag_list_item, null);
notetag = new add_note_noteTag();
notetag.txt_add_note_tag_list_name = (TextView)convertView.findViewById(R.id.txt_add_note_tag_list_name);
notetag.chk_add_note_tag_list_chk = (CheckBox)convertView.findViewById(R.id.chk_add_note_tag_list_chk);
convertView.setTag(notetag);
}
else {
notetag = (add_note_noteTag)convertView.getTag();
}
notetag.txt_add_note_tag_list_name.setText(list_notetag_date.get(position).get_tagName());
notetag.chk_add_note_tag_list_chk.setChecked(isSelected.get(position));
return convertView;
}
public class add_note_noteTag
{
TextView txt_add_note_tag_list_name;
CheckBox chk_add_note_tag_list_chk;
}
}
Application page:
list_popwin_note_tag.setAdapter(new Add_note_tag_list_BaseAdapter(this, list_noteTag_date));
list_popwin_note_tag.setOnItemClickListener(new noteTagListItemOnClickListener());
/**
* Click the list item event
* @author cg
*
*/
class noteTagListItemOnClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
// TODO Auto-generated method stub
add_note_noteTag vHollder = (add_note_noteTag) view.getTag();
// At every click of the fetch item The time will be right checkbox State changes and modifies map The value of the.
vHollder.chk_add_note_tag_list_chk.setChecked(vHollder.chk_add_note_tag_list_chk.isChecked()==true ? false : true);
boolean check = vHollder.chk_add_note_tag_list_chk.isChecked();
Add_note_tag_list_BaseAdapter.isSelected.put(position, check);
Log.v("noteTagListItemOnClickListener", list_noteTag_date.get(position).get_tagName() + check);
}
}
I hope this article has been helpful for Android programming.