Текстът на Grid View изчезва при превъртане в Android

Правя мрежов изглед, който показва изображенията с помощта на концепцията за зареждане на изображения от галерията. В елемента за мрежов изглед има два изгледа, единият е изображение, а другият е текстов изглед. По подразбиране текстовият изглед не се вижда. Моята нужда е, когато щракна върху елемент от мрежата, тогава текстовият изглед трябва да се вижда, което ще покаже броя на кликванията върху конкретен елемент от мрежата. Но проблемът е, когато щракна върху елемент от мрежата, след което Textview показва броя на кликванията, но при превъртане на изгледа на мрежата текстовият изглед изчезва. Задържам се на това от два дни, моля, помогнете ми да разреша проблема.

Ето моя метод GetView;

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

person Balvinder Singh    schedule 30.08.2014    source източник
comment
знаете ли javabeen като pojo class в java, свърших тази работа   -  person Naveen Tamrakar    schedule 30.08.2014
comment
Използвайте клас като viewHolder за задържане на вашите изгледи..   -  person Gunaseelan    schedule 30.08.2014
comment
можете ли да публикувате целия код на адаптера?   -  person Haresh Chhelana    schedule 30.08.2014
comment
@Gunaseelan, можете ли да обясните как да използвате държача за изглед тук. Използвах го, но не ми помогна, може би греших. Мисля, че това е единствената причина за ViewHolder. Моля, помогнете ми, ако можете. Благодаря.   -  person Balvinder Singh    schedule 30.08.2014
comment
@HareshChhelana, добре, публикувам го.   -  person Balvinder Singh    schedule 30.08.2014


Отговори (1)


Опитайте по този начин, надявам се това да ви помогне да решите проблема си.

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;
    }
}
person Haresh Chhelana    schedule 30.08.2014
comment
да, опитвам се, но click_count не показва текст (брой). - person Balvinder Singh; 30.08.2014
comment
текстът click_count не се вижда ли? и моля, проверете дали съм редактирал моя ans. - person Haresh Chhelana; 30.08.2014
comment
не се вижда, ако задам visibility.VISIBLE, тогава SetTxt() не задава текст към текстов изглед. - person Balvinder Singh; 30.08.2014
comment
показва текст, но проблемът не се показва на същия, върху който щраквам. Ако щракна върху 1-ви елемент, тогава текстът ще се покаже на 15-та позиция или може да варира - person Balvinder Singh; 30.08.2014
comment
приложението се срина при използване на този код. грешка: java.lang.ClassCastException: android.widget.TextView не може да бъде прехвърлен към com.img.rempic.ImageGridActivity$ImageAdapter3$ViewHolder - person Balvinder Singh; 30.08.2014
comment
Сривът е разрешен сега и Click_count показва стойност на броя, но изчезна при превъртане. - person Balvinder Singh; 30.08.2014