gpt4 book ai didi

android - ListView 多选问题?

转载 作者:行者123 更新时间:2023-11-29 16:04:45 25 4
gpt4 key购买 nike

我有一个带有 ImageView 和复选框的 ListView 。现在这里的问题是,当我选中第一个复选框并向下滚动列表时,其他复选框也会被选中。

例如,如果我选中第一个复选框,那么第 5 个复选框也会被选中,依此类推。现在我在我的 getView 中做了一些事情,这样这个错误就被删除了,但是当我滚动时,它又变得未选中。这是我的 getView() 方法

positionArray = new ArrayList<Boolean>(rowItems.size());
for(int i = 0; i < rowItems.size(); i ++)
positionArray.add(false);
//------------------------------------------ the above code is in oncreate


public View getView(final int position, View convertView, ViewGroup parent) {

RowItem rowItem = getItem(position); //List of Items
ViewHolder holder = new ViewHolder();
if (convertView == null) {

LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item, null);
holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
holder.radio1 = (CheckBox) convertView.findViewById(R.id.radio);
convertView.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag();
}
//holder.radio1.setChecked(positionArray.get(position));
holder.radio1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
if(isChecked)
positionArray.set(position, true);


}
});
imageLoader.displayImage(rowItem.getimageUrl(), holder.imageView, options, animateFirstListener);

return convertView;
}

最佳答案

getView() 中,您必须更新 View ,以显示项目是否被选中。只需取消注释行:

holder.radio1.setChecked(positionArray.get(position));

了解发生这种情况的原因对您来说很重要。看看这个答案:

更新:您没有取消设置数组中的值(当 isChecked=false 时)

positionArray.set(position, isChecked);

如果上述方法不起作用,我建议您根据此方法更改解决方案:

关于android - ListView 多选问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089795/

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