gpt4 book ai didi

java - 从自定义 ListView 中获取每个选中的项目

转载 作者:行者123 更新时间:2023-12-02 05:07:00 24 4
gpt4 key购买 nike

我需要从 ListView 中获取每个选中的项目,其中自定义项目在 List<> 变量中每个项目都包含一个复选框。该 ListView 使用另一个 List<> 动态填充。

到目前为止,我至少尝试在单击 FAB 时获取列表中的每个选中项目。我已经寻找了几种解决方案,但没有任何效果。坚持使用 SparseBooleanArray 似乎可以避免出现任何错误和崩溃。

这是列表 Activity 类:

        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;
}

最佳答案

为您的自定义适配器添加回调,例如 this .

然后在您的 Activity 类中,添加一个全局变量来维护列表中已检查项目的 ArrayList。现在,当您在 Activity 中设置适配器时覆盖接口(interface)回调,例如 this .

关于java - 从自定义 ListView 中获取每个选中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56344419/

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