Research Development
Research Development

Reputation: 904

Item saved value disappears when I scroll down in Listview item android

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

This is my code. I'm displaying 10 items in Listview. Each having text and image on imageview. I have putted next and previous image and image changes like if we set first item pic1 and second item I have click next button and image change to pic2 now i have scroll down till 10th item and now again go back to first item and second item it show pic one and next and previous button also disappear while its should save first item pic1 and second item pic2 please tell me where I'm doing mistake

Upvotes: 3

Views: 414

Answers (1)

Gaurav Tak
Gaurav Tak

Reputation: 68

the problem is happening due to cache so I would suggest use the following code before assigning image into ImageView object

            holder.imageView.setDrawingCacheEnabled(false);
            holder.imageView.destroyDrawingCache();
            holder.imageView.setImageDrawable(null);
            holder.imageView.setImageResource(imageid[position]);

Upvotes: 2

Related Questions