1

i put one spinner in my activity and in that i put one textview and imageview.when i scrolling at that time some images not display.most probably last some images not shown.for clear scenario check below enter image description hereimage

SpinnerAdapterRecharge.java

public class SpinnerAdapterRecharge extends ArrayAdapter<listview_data> {
    private Activity context;
    listview_data data[] = null;
    int layoutResourceId;
    ImageLoader imageLoader = ImageLoader.getInstance();
    DisplayImageOptions options;
    public SpinnerAdapterRecharge(Activity context, int resource,listview_data[] data)
    {
        super(context, resource, data);
        this.context = context;
        this.data = data;
        this.layoutResourceId = resource;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        options = new DisplayImageOptions.Builder().cacheInMemory(true)
                .cacheOnDisc(true)
                .cacheInMemory(true)
                .considerExifParams(true)
                .resetViewBeforeLoading(true)
                .showImageForEmptyUri(R.drawable.imagenotavailable)
                .showImageOnFail(R.drawable.imagenotavailable)
                .showImageOnLoading(R.drawable.imagenotavailable).build();
        return getCustomView(position, convertView, parent);
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent)
    {   // This view starts when we click the spinner.
        return getCustomView(position, convertView, parent);
    }
    public View getCustomView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        listHolder holder = null;
        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new listHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.spinnerimageIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.spinnerOperator);

            row.setTag(holder);
        }
        else
        {
            holder = (listHolder)row.getTag();
        }
        listview_data item = data[position];


        if(position == 0)
        {
            holder.imgIcon.setVisibility(View.GONE);
            holder.txtTitle.setText(context.getResources().getString(R.string.lbl_operator));
        }
        else {
            holder.txtTitle.setText(item.title);
            //holder.imgIcon.setImageResource(item.icon);
            //if (holder.imgIcon.getTag() == null ||  !holder.imgIcon.getTag().equals(item.icon)) {
                ImageAware imageAware = new ImageViewAware(holder.imgIcon, false);
                imageLoader.displayImage("drawable://"+item.icon,imageAware,options);
            //}
        }
        return row;
    }
    static class listHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
    }
}
Varshil shah
  • 268
  • 1
  • 6
  • 19

1 Answers1

0

You are using Spinner with tinny size, so you don't have to reuse each item.
Change your getCustomView to this:

public View getCustomView(int position, View convertView, ViewGroup parent) {
        listHolder holder = new listHolder();
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        View row = inflater.inflate(layoutResourceId, parent, false);
        holder.imgIcon = (ImageView)row.findViewById(R.id.spinnerimageIcon);
        holder.txtTitle = (TextView)row.findViewById(R.id.spinnerOperator);

        listview_data item = data[position];


        if(position == 0)
        {
            holder.imgIcon.setVisibility(View.GONE);
            holder.txtTitle.setText(context.getResources().getString(R.string.lbl_operator));
        }
        else {
            holder.txtTitle.setText(item.title);
            //holder.imgIcon.setImageResource(item.icon);
            //if (holder.imgIcon.getTag() == null ||  !holder.imgIcon.getTag().equals(item.icon)) {
                ImageAware imageAware = new ImageViewAware(holder.imgIcon, false);
                imageLoader.displayImage("drawable://"+item.icon,imageAware,options);
            //}
        }
        return row;
    }
Volodymyr Kulyk
  • 6,455
  • 3
  • 36
  • 63