gpt4 book ai didi

android - ListView.getCheckedItemPositions 无法返回 SparseBooleanArray 中的选中项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:28 26 4
gpt4 key购买 nike

我正在尝试读取具有多个 checkboxes 的列表中的联系人,但是当我调用 sparsebooleanarray 时......它只为所有列表条目返回 false。 .even for the one s checked ...我调查了这个线程Why is ListView.getCheckedItemPositions() not returning correct values? ...但是当我实现 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);

}


}
}



});
}

最佳答案

我认为您应该使用列表适配器 View 。

它将提供一个 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 ;
}
}

试试这个——它会帮助您获得位置以及检查的是真还是假。

关于android - ListView.getCheckedItemPositions 无法返回 SparseBooleanArray 中的选中项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6352990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com