Android ListView.GetCheckEditePositions无法返回SparseBooleanArray中的选中项
我试图读取带有多个Android ListView.GetCheckEditePositions无法返回SparseBooleanArray中的选中项,android,listview,checkbox,android-layout,android-listview,Android,Listview,Checkbox,Android Layout,Android Listview,我试图读取带有多个复选框的列表中的联系人,但是当我调用sparsebooleanarray时,它只会为所有列表条目返回false,…即使是已检查的…我查看了此线程…但当我实现addClickHandlerToCheckBox时,它强制停止..这已经困扰了我4天..请提供任何帮助 public void populateContactList() { // Build adapter with contact entries final Cursor cursor = getCo
复选框的列表中的联系人,但是当我调用sparsebooleanarray
时,它只会为所有列表条目返回false,…即使是已检查的…我查看了此线程…但当我实现addClickHandlerToCheckBox时,它强制停止..这已经困扰了我4天..请提供任何帮助
public void populateContactList() {
// Build adapter with contact entries
final Cursor cursor = getContacts();
String[] fields = new String[] {
ContactsContract.Data.DISPLAY_NAME
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor,
fields, new int[] {R.id.contactEntryText});
mContactList.setAdapter(adapter);
mContactList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
proceedButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SparseBooleanArray checked=mContactList.getCheckedItemPositions();
int len = mContactList.getCount();
for(int i=0;i<len;i++)
{
if(checked.get(i)==true)
{
String item = mContactList.getAdapter().getItem(checked.keyAt(i)).toString();
edt.append(","+item);
}
}
}
});
}
public void populateContactList(){
//使用联系人条目生成适配器
最终光标=getContacts();
字符串[]字段=新字符串[]{
Contacts contract.Data.DISPLAY\u NAME
};
SimpleCursorAdapter=新的SimpleCursorAdapter(此,R.layout.contact_条目,光标,
字段,新int[]{R.id.contactEntryText});
mContactList.setAdapter(适配器);
mContactList.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
proceedButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
SparseBooleanArray checked=mContactList.GetCheckEditePositions();
int len=mContactList.getCount();
对于(inti=0;i我认为应该使用列表适配器视图
它将提供一个onCheckedChanged侦听器,因此您也将获得该位置
像
holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int cupos = position+1;
}
});
现在看看整个例子:
Listview.setAdapter(new settingsBase(getApplicationContext()));
private class settingsBase extends BaseAdapter{
public settingsBase(Context context) {
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return listview.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder ;
holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int cupos = position+1;
}
});
return convertView;
}
class ViewHolder{
TextView txtSettingname , txtShow ;
RadioButton radioButton ;
}
}
试试这个--它将帮助您获得位置,以及是否检查为true或false