Android 当我在Listview项目中向下滚动时,项目保存值消失 公共类CustomList扩展了ArrayAdapter{ 私有字符串[]名称; 私有整数[]imageid; 私人活动语境; 充气机; 列出类别; 布尔值firstimagevisible=true; 布尔值secondimagevisible=false; 公共自定义列表(活动上下文、字符串[]名称、整数[]图像ID){ super(上下文、R.layout.list\u布局、名称); this.context=上下文; this.names=名称; this.imageid=imageid; 充气器=充气器。从(上下文); } 私有类视窗持有者{ 文本视图文本视图; 图像视图图像视图; 文本视图价格; 按钮图像; 下一页按钮; 纺纱机; } @凌驾 public int getViewTypeCount(){ 返回getCount(); } @凌驾 public int getItemViewType(int位置){ 返回位置; } @凌驾 public int getCount(){ 返回super.getCount(); } @凌驾 公共长getItemId(int位置){ 返回super.getItemId(位置); } @凌驾 公共字符串getItem(int位置){ 返回super.getItem(位置); } 公共视图getView(最终整数位置、视图视图、视图组父视图){ 最终持票人; 如果(视图==null){ holder=新的ViewHolder(); 视图=充气机。充气(R.layout.list\u布局,空); // holder.textView=(textView)view.findViewById(R.id.editText); holder.imageView=(imageView)view.findViewById(R.id.list\u avatar); holder.price=(TextView)view.findViewById(R.id.price); holder.previousimage=(按钮)view.findViewById(R.id.previousimage); holder.nextimage=(按钮)view.findViewById(R.id.nextimage); holder.sppiner=(微调器)view.findViewById(R.id.sppiner); 视图.设置标签(支架); }否则{ holder=(ViewHolder)view.getTag(); } holder.textView.setText(名称[位置]); holder.imageView.setImageResource(imageid[位置]); categories=newarraylist(); for(int i=1;i adapterView){ } }); 返回视图; } }

Android 当我在Listview项目中向下滚动时,项目保存值消失 公共类CustomList扩展了ArrayAdapter{ 私有字符串[]名称; 私有整数[]imageid; 私人活动语境; 充气机; 列出类别; 布尔值firstimagevisible=true; 布尔值secondimagevisible=false; 公共自定义列表(活动上下文、字符串[]名称、整数[]图像ID){ super(上下文、R.layout.list\u布局、名称); this.context=上下文; this.names=名称; this.imageid=imageid; 充气器=充气器。从(上下文); } 私有类视窗持有者{ 文本视图文本视图; 图像视图图像视图; 文本视图价格; 按钮图像; 下一页按钮; 纺纱机; } @凌驾 public int getViewTypeCount(){ 返回getCount(); } @凌驾 public int getItemViewType(int位置){ 返回位置; } @凌驾 public int getCount(){ 返回super.getCount(); } @凌驾 公共长getItemId(int位置){ 返回super.getItemId(位置); } @凌驾 公共字符串getItem(int位置){ 返回super.getItem(位置); } 公共视图getView(最终整数位置、视图视图、视图组父视图){ 最终持票人; 如果(视图==null){ holder=新的ViewHolder(); 视图=充气机。充气(R.layout.list\u布局,空); // holder.textView=(textView)view.findViewById(R.id.editText); holder.imageView=(imageView)view.findViewById(R.id.list\u avatar); holder.price=(TextView)view.findViewById(R.id.price); holder.previousimage=(按钮)view.findViewById(R.id.previousimage); holder.nextimage=(按钮)view.findViewById(R.id.nextimage); holder.sppiner=(微调器)view.findViewById(R.id.sppiner); 视图.设置标签(支架); }否则{ holder=(ViewHolder)view.getTag(); } holder.textView.setText(名称[位置]); holder.imageView.setImageResource(imageid[位置]); categories=newarraylist(); for(int i=1;i adapterView){ } }); 返回视图; } },android,listview,Android,Listview,这是我的密码。我在Listview中显示了10个项目。每个都在imageview上具有文本和图像。我已经放置了下一个和上一个图像和图像更改,例如,如果我们设置第一个项目pic1和第二个项目,我点击下一步按钮,图像更改为pic2,现在我向下滚动到第十个项目,现在再次返回到第一个项目和第二个项目,它显示pic 1,下一个和上一个按钮也消失,而它应该保存第一个项目pic1和第二项pic2请告诉我哪里出错了问题是由于缓存造成的,因此我建议在将图像分配到ImageView对象之前使用以下代码 public

这是我的密码。我在Listview中显示了10个项目。每个都在imageview上具有文本和图像。我已经放置了下一个和上一个图像和图像更改,例如,如果我们设置第一个项目pic1和第二个项目,我点击下一步按钮,图像更改为pic2,现在我向下滚动到第十个项目,现在再次返回到第一个项目和第二个项目,它显示pic 1,下一个和上一个按钮也消失,而它应该保存第一个项目pic1和第二项pic2请告诉我哪里出错了

问题是由于缓存造成的,因此我建议在将图像分配到ImageView对象之前使用以下代码

public class CustomList extends ArrayAdapter<String> {
    private String[] names;

    private Integer[] imageid;
    private Activity context;
    LayoutInflater inflater;
    List<String> categories;
    boolean firstimagevisible = true;
    boolean secondimagevisible = false;

    public CustomList(Activity context, String[] names, Integer[] imageid) {
        super(context, R.layout.list_layout, names);
        this.context = context;
        this.names = names;

        this.imageid = imageid;

        inflater = LayoutInflater.from(context);

    }


    private class ViewHolder {
        TextView textView;
        ImageView imageView;
        TextView price;
        Button previousimage;
        Button nextimage;
        Spinner sppiner;

    }



    @Override
    public int getViewTypeCount() {

        return getCount();
    }

    @Override
    public int getItemViewType(int position) {

        return position;
    }


    @Override
    public int getCount() {
        return super.getCount();
    }

    @Override
    public long getItemId(int position) {
        return super.getItemId(position);
    }

    @Override
    public String getItem(int position) {
        return super.getItem(position);
    }

    public View getView(final int position, View view, ViewGroup parent) {
        final ViewHolder holder;
        if (view == null) {
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.list_layout, null);
            //
            holder.textView = (TextView) view.findViewById(R.id.editText);
            holder.imageView = (ImageView) view.findViewById(R.id.list_avatar);
            holder.price = (TextView) view.findViewById(R.id.price);
            holder.previousimage = (Button) view.findViewById(R.id.previousimage);
            holder.nextimage = (Button) view.findViewById(R.id.nextimage);
            holder.sppiner = (Spinner) view.findViewById(R.id.sppiner);


            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        holder.textView.setText(names[position]);
        holder.imageView.setImageResource(imageid[position]);
        categories = new ArrayList<String>();
        for (int i = 1; i <= 20; i++) {

            categories.add(String.valueOf(i));
        }
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context,
                android.R.layout.simple_spinner_item, categories);
        dataAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        holder.sppiner.setAdapter(dataAdapter);


        holder.previousimage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                holder.imageView.setImageResource(R.drawable.pro1);
                holder.previousimage.setVisibility(View.GONE);
                holder.nextimage.setVisibility(View.VISIBLE);

                secondimagevisible = false;
                firstimagevisible = true;
                holder.price.setText(String.valueOf(1 * 22));
            }
        });

        holder.nextimage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                holder.imageView.setImageResource(R.drawable.pro2);
                holder.nextimage.setVisibility(View.GONE);
                holder.previousimage.setVisibility(View.VISIBLE);
                secondimagevisible = true;
                firstimagevisible = false;
                holder.price.setText(String.valueOf(1 * 16));
            }
        });

        holder.sppiner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                String item = adapterView.getItemAtPosition(i).toString();

                int Quantity = Integer.parseInt(item);
                holder.previousimage.setVisibility(View.GONE);
                if (firstimagevisible == false && secondimagevisible == true) {
                    holder.price.setText(String.valueOf(Quantity * 16));
                } else {
                    holder.price.setText(String.valueOf(Quantity * 22));
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });


        return view;
    }
}

但“上一步”和“下一步”按钮也会在“向下搜索”和“再次查看”时隐藏。我正在显示来自项目本身的本地图像,所以缓存问题不会有任何解决方案
            holder.imageView.setDrawingCacheEnabled(false);
            holder.imageView.destroyDrawingCache();
            holder.imageView.setImageDrawable(null);
            holder.imageView.setImageResource(imageid[position]);