gpt4 book ai didi

android - 带有复选框和点击监听器的 ListView

转载 作者:行者123 更新时间:2023-11-29 14:07:37 26 4
gpt4 key购买 nike

我想为使用自定义适配器的 ListView 的复选框实现点击监听器。像这样:

enter image description here

我知道 choiceMode 的存在,但我想自己实现。

我正在尝试应用好的做法。这是我的适配器的样子:

public class TaskListAdapter extends ArrayAdapter<ListTask> {
private ArrayList<ListTask> mItems;
private ArrayList<Boolean> mChecked;
private LayoutInflater mInflater;

public TaskListAdapter(Context context, int textViewResourceId, ArrayList<ListTask> items) {
super(context, textViewResourceId, items);
this.mItems = items;

// Cache the LayoutInflate to avoid asking for a new one each time
mInflater = LayoutInflater.from(context);

// Initialize all checkboxes with false value
mChecked = new ArrayList<Boolean>();
for (int i = 0; i < this.getCount(); i++) {
mChecked.add(i, false);
}
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;

if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_row, null);

holder = new ViewHolder();
holder.checkbox = (CheckBox) convertView.findViewById(R.id.mycheckbox);
holder.text = (TextView) convertView.findViewById(R.id.mytext);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

MyList mylist = mItems.get(position);

holder.text.setText(mylist.getMyText());

// Create a listener for the CheckBox
holder.checkbox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (holder.checkbox.isChecked()) {
mChecked.set(position, true);
} else {
mChecked.set(position, false);
}
}

});
holder.checkbox.setChecked(mChecked.get(position));

return convertView;
}

static class ViewHolder {
CheckBox checkbox;
TextView text;
}
}

当我运行我的应用程序时,出现此错误:

java.lang.IndexOutOfBoundsException: Invalid location 0, size is 0

该行抛出的错误

holder.checkbox.setChecked(mChecked.get(position));

就在返回语句之前。

如果我评论它并重新运行应用程序,它会显示列表,但是当我单击一个复选框时,它还会为此行抛出一个 IndexOutOfBoundsException:

mChecked.set(position, true);

在检查复选框是否被选中的“if”语句中。

我做错了什么?

最佳答案

你检查过position的值了吗?您是否还确保针对正确的 View 甚至填充您的列表?您可能没有填充 ListView。据我所知,当涉及到 ListView 和 CheckBox 时,position 并不是我感兴趣的变量。

关于android - 带有复选框和点击监听器的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822675/

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