[英]Grab every checked items from a custom listview
我需要從ListView中獲取每個選中的項目,其中自定義項目包含List <>變量中的每個復選框。 使用另一個List <>動態填充ListView。
到目前為止,我至少在點擊FAB時嘗試獲取列表中的每個選中項目。 我找了幾個解決方案,但沒有任何效果。 堅持使用SparseBooleanArray似乎可以避免任何錯誤和崩潰。
這是列表活動類:
listViewWithCheckBox.setChoiceMode(listViewWithCheckBox.CHOICE_MODE_MULTIPLE);
listViewWithCheckBox.setAdapter(new CustomAdapter(this, listViewItems));
FloatingActionButton confirmFAB = findViewById(R.id.inviter_liste_confirm_fab);
confirmFAB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SparseBooleanArray checked = listViewWithCheckBox.getCheckedItemPositions();
System.out.println(listViewWithCheckBox.getCheckedItemPositions());
System.out.println(listViewWithCheckBox.getCount());
for (int i = 0; i < checked.size(); i++) {
if (checked.valueAt(i) == true) {
String tag = String.valueOf(listViewWithCheckBox.getItemAtPosition(checked.keyAt(i)));
Toast.makeText(getApplicationContext(), "" + tag, Toast.LENGTH_LONG).show();
Log.i("xxxx", i + " " + tag);
}
}
}
});
這是我的自定義適配器實現ListAdapter,不包括空函數:
ArrayList<ItemObjet> arrayList;
Context context;
public CustomAdapter(Context context, ArrayList<ItemObjet> arrayList) {
this.arrayList=arrayList;
this.context=context;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ItemObjet subjectData=arrayList.get(position);
if(convertView==null) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
convertView=layoutInflater.inflate(R.layout.list_people_select_item, null);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
TextView tittle=convertView.findViewById(R.id.inviter_list_nom);
tittle.setText(subjectData.getName());
}
return convertView;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return arrayList.size();
}
@Override
public boolean isEmpty() {
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.