Balvinder Singh
Balvinder Singh

Reputation: 580

Grid View text dissapear on scroll in Android

I am making a gridview which displaying the Images using Image Loader concept from gallery. In grid view item there are two views one is Image and other is textview. By default textview is not visible. My need is when i click on gridview item then textview should be visible which will show the number of clicks on particular item of grid. But problem is when i click on grid item then Textview showing click count, but when scrolling the grid view the textview get dissapeared. I am stucking on this since two days, please help me to solve problem.

Here is my GetView Method;

        public class ImageAdapter extends BaseAdapter {
         View view;

         ArrayList<String> mList;
        LayoutInflater mInflater;
        Context mContext;



    public ImageAdapter(Context context, ArrayList<String> imageList) {
        // TODO Auto-generated constructor stub
        mContext = context;
        mInflater = LayoutInflater.from(mContext);

        mList = new ArrayList<String>();

        this.mList = imageList;

    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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


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

    view=convertView;           
    LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.row_multiphoto_item, null);

    final ImageView imageView = (ImageView) view.findViewById(R.id.imageView1);
    final TextView click_count=(TextView)view.findViewById(R.id.count);
    imageLoader.displayImage("file://" + imageUrls.get(position), imageView, options, new SimpleImageLoadingListener() {
        @Override
        public void onLoadingComplete(Bitmap loadedImage) {
            Animation anim = AnimationUtils.loadAnimation(ImageGridActivity.this, R.anim.fade_in);
            imageView.setAnimation(anim);
            anim.start();
        }
    });

    // click_count.setVisibility(View.VISIBLE);
    view.setOnClickListener(new OnClickListener() {

        int c=0;

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            image_url.add(imageUrls.get(position));
            count.setText("("+image_url.size()+")");
            c=c+1;
            click_count.setTag(view);
            click_count.setVisibility(View.VISIBLE);
            click_count.setText(String.valueOf(c));
            count.setText("("+image_url.size()+")");
            Toast.makeText(getApplicationContext(), "cuy;;; "+position, 89).show();
        }
    });
//}
    return view;
}
}

Upvotes: 1

Views: 530

Answers (1)

Hareshkumar Chhelana
Hareshkumar Chhelana

Reputation: 24848

Try this way,hope this will help you to solve your problem.

public class ImageAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<HashMap<String,String>> list;
    private Animation anim;

    public ImageAdapter(Context context, ArrayList<String> imageList){
        this.context = context;
        list = new ArrayList<HashMap<String, String>>();
        for (String image : imageList){
            HashMap<String,String> row =  new HashMap<String, String>();
            row.put("image",image);
            row.put("count","0");
            list.add(row);
        }
        anim = AnimationUtils.loadAnimation(context, R.anim.fade_in);
    }

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

    @Override
    public Object getItem(int position){
        return list.get(position);
    }

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

    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null){
            holder =new ViewHolder();
            convertView = LayoutInflater.from(context).inflate(R.layout.row_multiphoto_item, null);
            holder.imageView = (ImageView)convertView.findViewById(R.id.imageView1);
            holder.click_count = (TextView)convertView.findViewById(R.id.count);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder)convertView.getTag();
        }

        holder.imageView.setAnimation(anim);
        imageLoader.displayImage("file://"+list.get(position).get("image").toString(), holder.imageView, options, new SimpleImageLoadingListener() {
            @Override
            public void onLoadingComplete(Bitmap loadedImage) {
                anim.start();
            }
        });
        holder.click_count.setText(String.valueOf(list.get(position).get("count")));
        if(list.get(position).get("count").equals("0")){
            holder.click_count.setVisibility(View.INVISIBLE);
        }else{
            holder.click_count.setVisibility(View.VISIBLE);
        }
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                list.get(position).put("count",String.valueOf(Integer.parseInt(list.get(position).get("count"))+1));
                notifyDataSetChanged();
            }
        });
        return convertView;
    }

    class ViewHolder{
        ImageView imageView;
        TextView click_count;
    }
}

Upvotes: 1

Related Questions