gpt4 book ai didi

android - 滚动时 ListView 项目随机播放

转载 作者:行者123 更新时间:2023-11-29 15:43:50 25 4
gpt4 key购买 nike

我的适配器中有以下代码。每个项目都包含两个图像,在它们下面每个图像都有一个复选框。我想显示这些项目的列表,但是当我上下滚动时,第一个和最后一个项目似乎是一样的。然后过了一会儿,其他项目也会出现故障。我查看了有关此问题的其他问题,但我无法找到为什么我的 ListView 项目在我上下滚动后会乱序。

@Override
public View getView(final int position, View convertView, ViewGroup parent){
View view = convertView;
if(view == null){
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.wheel_list_item, null);

viewHolder.decisionNum = (TextView)view.findViewById(R.id.decisionNumText);
viewHolder.leftWheel = (ImageView)view.findViewById(R.id.leftWheel);
viewHolder.rightWheel = (ImageView)view.findViewById(R.id.rightWheel);
viewHolder.leftCheckBox = (CheckBox)view.findViewById(R.id.leftCheckBox);
viewHolder.rightCheckBox = (CheckBox)view.findViewById(R.id.rightCheckBox);
viewHolder.wheelTuple = list.get(position);
view.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder)view.getTag();
}

viewHolder.decisionNum.setText(Integer.toString(position + 1));

viewHolder.leftCheckBox.setClickable(false);
viewHolder.rightCheckBox.setClickable(false);

viewHolder.leftWheel.setImageBitmap(new WheelView(context, viewHolder.wheelTuple.left).getBitmapReduced());
viewHolder.rightWheel.setImageBitmap(new WheelView(context, viewHolder.wheelTuple.right).getBitmapReduced());

int id = context.getResources().getIdentifier("GREY", "color", context.getPackageName());
int colorId=context.getResources().getColor(id);

if(!viewHolder.wheelTuple.left.isChosen()){
viewHolder.leftWheel.setColorFilter(colorId, PorterDuff.Mode.MULTIPLY);
viewHolder.rightCheckBox.setChecked(true);
}
else{
viewHolder.rightWheel.setColorFilter(colorId, PorterDuff.Mode.MULTIPLY);
viewHolder.leftCheckBox.setChecked(true);
}

return view;
}

static class ViewHolder{
TextView decisionNum;
ImageView leftWheel;
ImageView rightWheel;
CheckBox leftCheckBox;
CheckBox rightCheckBox;
WheelListActivity.WheelTuple wheelTuple;
}

最佳答案

你必须使用下面两个函数,

@Override
public int getViewTypeCount() {
if(searchList.size()==0){
return 1;
}
return searchList.size();
}

@Override
public int getItemViewType(int position) {
return position;
}

如果您的 dataArrayList 的大小为 0,那么请记住从 getViewTypeCount() 返回 1,否则您将获得 ArrayIndexOutOfBoundsException。引用上面的代码示例。

关于android - 滚动时 ListView 项目随机播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076803/

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