多个复选框选中,当一个检查一个复选框 [英] multiple checkboxes checked when one check a one check box
本文介绍了多个复选框选中,当一个检查一个复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是一个新的Android开发者,当我单击一个复选框多的复选框在多行检查,我使用自定义适配器,请谁能帮助我?
我的联系人列表如下。
公共类ContactList延伸活动{
ListView的lvContacts;
清单<串GT;列表名称;
清单<串GT; listnumber的;
SimpleCursorAdapter适配器;
ArrayList的<&PHONELIST GT; ARR;
ArrayList的<&PHONELIST GT; arrnumber;
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
的String [] =投影新的String [] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
};
。游标c1 = getContentResolver()查询(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,投影,NULL,NULL,NULL);
//让活动管理光标 // startManagingCursor(C1);
LISTNAME =新的ArrayList<串GT;();
listnumber的=新的ArrayList<串GT;();
而(c1.moveToNext())
{
字符串名称= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
串号= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
listname.add(名);
listnumber.add(数);
}
c1.close();
//而(c1.moveToNext())
// {
// //Log.d(\"fghfh,+ c1.getColumnIndex(Phone.NUMBER));
//字符串名称= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//串号= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// //System.out.println(\"..................\"+number);
// Log.d(联系人,名); // +:+号);
//}
[对象] OBJ = listname.toArray();
[对象] objnumber = listnumber.toArray();
// arrnumber =新的ArrayList<&PHONELIST GT;();
ARR =新的ArrayList<&PHONELIST GT;();
的String [] =达新的String [obj.length]
的String [] = danumber新的String [objnumber.length] 的for(int i = 0; I< obj.length;我++)
{
danumber [I] =(字符串)objnumber [I]
DA [I] =(字符串)OBJ [I]
Toast.makeText(这一点,Humayoon变焦+ OBJ [I],Toast.LENGTH_SHORT).show();
arr.add(新PHONELIST(哒[I],danumber [I]));
}
ListView控件的ListView =(ListView控件)findViewById(R.id.lvContacts);
CustomAdapter adpttt =新CustomAdapter(ContactList.this,R.layout.contacts_list_item,ARR);
listView.setAdapter(adpttt);
}
}
我的自定义适配器code是继
公共类CustomAdapter扩展ArrayAdapter<&PHONELIST GT; {
INT inflatr;
上下文ctxt;
ArrayList的<&PHONELIST GT;数据=新的ArrayList<&PHONELIST GT;();
公共CustomAdapter(上下文的背景下,INT资源的ArrayList<&PHONELIST GT; ARR){ 超(背景下,资源,ARR);
this.inflatr =资源;
this.ctxt =背景;
this.data = ARR;
}
@覆盖
众长getItemId(INT位置){
返回的位置;
} 公共查看getView(INT位置,查看convertView,父母的ViewGroup){
UserHolder支架=无效;
查看排= convertView;
如果(convertView == NULL)
{
LayoutInflater吹气=((活动)ctxt).getLayoutInflater();
行= inflater.inflate(inflatr,父母,假);
持有人=新UserHolder();
holder.textName =(TextView中)row.findViewById(R.id.lblName);
holder.stnumber =(TextView中)row.findViewById(R.id.mobilenum);
holder.checked =(复选框)row.findViewById(R.id.check);// holder.btnEdit =(的ImageButton)row.findViewById(R.id.atomPay_removePay);
row.setTag(保持器);
}
其他
{
支架=(UserHolder)row.getTag();
}//如果(bulkflag)
// {
// holder.checked.setVisibility(View.VISIBLE);
//}
//其他
// {
// holder.checked.setVisibility(View.GONE);
//}
// holder.checked.setOnClickListener(新OnClickListener(){
//
//公共无效的onClick(视图v){
//
//如果(holder.checked.isChecked())
// {
// selectedIds.add(recIdArr.get(reportslistview.getPositionForView(CBOX)));
// //System.out.println(\"position+ reportslistview.getPositionForView(CBOX));
//}
//其他
// {
// selectedIds.remove(recIdArr.get(reportslistview.getPositionForView(CBOX)));
//}
//}
//});
PHONELIST DTA = data.get(位置);
holder.checked.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(视图v){
INT位置=(整数)v.getTag(); data.get(位置).setselect(data.get(位置).getSelect()!);
notifyDataSetChanged();
}
});
holder.checked.setChecked(dta.getSelect());
//holder.checked.setTag(position);
Toast.makeText(ctxtHumayoon zoooommmm+ dta.getNumber(),Toast.LENGTH_SHORT).show(); 的for(int i = 1; I< = 256;我++)
{
holder.textName.setText(dta.getName());
}
对于(INT J = 1; J< = 256; J ++)
{
holder.stnumber.setText(dta.getNumber());
}
// holder.btnEdit.setOnClickListener(新OnClickListener(){
//
// @覆盖
//公共无效的onClick(视图v){
// Toast.makeText(ctxtHumayoon Siddiqueeeeeeeeeeeeeeeeeee+ dta.getName(),Toast.LENGTH_SHORT).show();
//意图moreIntent =新意图(的getContext(),ContactList.class);
//串TNAME = dta.getName();
// moreIntent.putExtra(模板,TNAME);
// v.getContext()startActivity(moreIntent)。
// // ctxt.startActivity(ctxt,ContactList.class);
//}
//});
返回行;
}
@覆盖
公众诠释的getCount(){
// // TODO自动生成方法存根
返回data.size();
} 静态类UserHolder {
TextView的textName;
TextView的textAddress;
TextView的textLocation;
的ImageButton btnEdit;
按钮btnDelete;
TextView的stnumber;
选中复选框;
}
}我的电话清单类以下... 包com.example.sqliteapplication; 公共类PHONELIST {
字符串名称;
串号;
布尔isSelected;
公共PHONELIST(串串,串号){
超();
this.name =串;
this.number =号;
}
公共无效setselect(布尔B)
{
this.isSelected = B;
}
公共布尔getSelect()
{
返回isSelected;
}
公共字符串的getName(){
返回名称;
}
公共无效setNumber(串号)
{
this.number =号;
}
公共字符串getNumber()
{
返回数;
}
公共无效setname可以(字符串名称){
this.name =名称;
} }
解决方案在
getView
您需要设置复选框
价值方法如下:
holder.checked.setChecked(dta.getSelect());
和您需要为该设置监听器或checkChangeListener,用于更新选择
值
所以你的getView方法必须是这样:
@覆盖
公共查看getView(INT位置,查看convertView,父母的ViewGroup){
UserHolder支架=无效;
查看排= convertView;
如果(convertView == NULL)
{
//你的code }
其他
{
//你的code
}
holder.checked.setOnClickListener(本);
holder.checked.setChecked(dta.getSelect());
holder.checked.setTag(位置); //你需要这样来的onClick中位置的方法
//其他code
和的onClick方法:
@覆盖
公共无效的onClick(视图v){ INT位置=(整数)v.getTag(); data.get(位置).setselect(
!data.get(位置).getSelect());
notifyDataSetChanged();
}
I am a New Android Developer and when I click on one check-box multiple check-boxes are checked in multiple rows, I am using a custom adapter, please can anyone help me?
My Contact List is following ..
public class ContactList extends Activity {
ListView lvContacts;
List<String> listname;
List<String> listnumber;
SimpleCursorAdapter adapter;
ArrayList<PhoneList> arr;
ArrayList<PhoneList> arrnumber;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
};
Cursor c1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,null,null, null);
// Let activity manage the cursor
//startManagingCursor(c1);
listname = new ArrayList<String>();
listnumber = new ArrayList<String>();
while (c1.moveToNext())
{
String name=c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
listname.add(name);
listnumber.add(number);
}
c1.close();
// while(c1.moveToNext())
// {
// //Log.d("fghfh", ""+c1.getColumnIndex(Phone.NUMBER));
// String name=c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
// String number=c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// //System.out.println(".................."+number);
// Log.d("Contacts : ",name);//+":"+number);
//}
Object[] obj=listname.toArray();
Object[] objnumber=listnumber.toArray();
// arrnumber=new ArrayList<PhoneList>();
arr=new ArrayList<PhoneList>();
String[] da=new String[obj.length];
String[] danumber=new String[objnumber.length];
for(int i=0; i<obj.length; i++)
{
danumber[i]=(String)objnumber[i];
da[i]=(String)obj[i];
Toast.makeText(this, "Humayoon zoom"+obj[i], Toast.LENGTH_SHORT).show();
arr.add(new PhoneList(da[i],danumber[i]));
}
ListView listView = (ListView) findViewById(R.id.lvContacts);
CustomAdapter adpttt=new CustomAdapter(ContactList.this,R.layout.contacts_list_item,arr);
listView.setAdapter(adpttt);
}
}
My Custom Adapter code is following
public class CustomAdapter extends ArrayAdapter<PhoneList> {
int inflatr;
Context ctxt;
ArrayList<PhoneList> data=new ArrayList<PhoneList>();
public CustomAdapter(Context context, int resource, ArrayList<PhoneList> arr) {
super(context, resource, arr);
this.inflatr = resource;
this.ctxt = context;
this.data= arr;
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
UserHolder holder = null;
View row = convertView;
if(convertView==null)
{
LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
row = inflater.inflate(inflatr, parent, false);
holder = new UserHolder();
holder.textName=(TextView)row.findViewById(R.id.lblName);
holder.stnumber=(TextView)row.findViewById(R.id.mobilenum);
holder.checked=(CheckBox)row.findViewById(R.id.check);
// holder.btnEdit = (ImageButton) row.findViewById(R.id.atomPay_removePay);
row.setTag(holder);
}
else
{
holder = (UserHolder) row.getTag();
}
// if(bulkflag)
// {
// holder.checked.setVisibility(View.VISIBLE);
// }
// else
// {
// holder.checked.setVisibility(View.GONE);
// }
// holder.checked.setOnClickListener(new OnClickListener() {
//
// public void onClick(View v) {
//
// if(holder.checked.isChecked())
// {
// selectedIds.add(recIdArr.get(reportslistview.getPositionForView(cBox)));
// //System.out.println("position "+reportslistview.getPositionForView(cBox));
// }
// else
// {
// selectedIds.remove(recIdArr.get(reportslistview.getPositionForView(cBox)));
// }
// }
// });
PhoneList dta=data.get(position);
holder.checked.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
data.get(position).setselect(!data.get(position).getSelect());
notifyDataSetChanged();
}
});
holder.checked.setChecked(dta.getSelect());
//holder.checked.setTag(position);
Toast.makeText(ctxt, "Humayoon zoooommmm"+dta.getNumber(), Toast.LENGTH_SHORT).show();
for(int i=1; i<=256; i++)
{
holder.textName.setText(dta.getName());
}
for(int j=1; j<=256; j++)
{
holder.stnumber.setText(dta.getNumber());
}
// holder.btnEdit.setOnClickListener(new OnClickListener() {
//
// @Override
// public void onClick(View v) {
// Toast.makeText(ctxt, "Humayoon Siddiqueeeeeeeeeeeeeeeeeee"+dta.getName(), Toast.LENGTH_SHORT).show();
// Intent moreIntent=new Intent(getContext(),ContactList.class);
// String tName=dta.getName();
// moreIntent.putExtra("Template",tName);
// v.getContext().startActivity(moreIntent);
// // ctxt.startActivity(ctxt,ContactList.class);
// }
// });
return row;
}
@Override
public int getCount() {
// // TODO Auto-generated method stub
return data.size();
}
static class UserHolder {
TextView textName;
TextView textAddress;
TextView textLocation;
ImageButton btnEdit;
Button btnDelete;
TextView stnumber;
CheckBox checked;
}
}
My phone List class is following...
package com.example.sqliteapplication;
public class PhoneList {
String name;
String number;
boolean isSelected;
public PhoneList(String string,String number) {
super();
this.name = string;
this.number=number;
}
public void setselect(Boolean b)
{
this.isSelected=b;
}
public boolean getSelect()
{
return isSelected;
}
public String getName() {
return name;
}
public void setNumber(String number)
{
this.number=number;
}
public String getNumber()
{
return number;
}
public void setName(String name) {
this.name = name;
}
}
解决方案
you need set checkBox
value in getView
method like:
holder.checked.setChecked(dta.getSelect());
and you need set listener or checkChangeListener for that, for updating Select
value
so your getView method must be like:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
UserHolder holder = null;
View row = convertView;
if(convertView==null)
{
// yourCode
}
else
{
// your code
}
holder.checked.setOnClickListener(this);
holder.checked.setChecked(dta.getSelect());
holder.checked.setTag(position); // you need this for getting position in onClick method
// other code
and onClick method:
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
data.get(position).setselect(
!data.get(position).getSelect());
notifyDataSetChanged();
}
这篇关于多个复选框选中,当一个检查一个复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文