Storing the state of checkbox in listview while using custom BaseAdapter in android?

最后都变了- 提交于 2019-12-29 04:57:08

问题


i have a listview which is having image, text and checkbox i have inflated this using BaseAdapter. i want to send only those images which are selected but how to store the state of checkbox ? may be i am wrong as i am using baseadapter. you can suggest any other way to do that.


回答1:


please look below my Baseadapter

class ImageInfoAdapter extends BaseAdapter{

        @Override
        public int getCount() {

            if(viewcount == 0){
                return 0;
            }
            return viewcount;
        }

        @Override
        public Object getItem(int position) {

            return isSentAlList.get(position);
        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public View getView(int position, View view, ViewGroup parent) {

            final ViewHolder viewHolder;
            View rowView=view;

            if(rowView==null){
                LayoutInflater layoutinflate =  LayoutInflater.from(ListPictures.this);
                rowView=layoutinflate.inflate(R.layout.listviewayout, parent, false);


                viewHolder = new ViewHolder();

                viewHolder.textViewisSentFlag = (TextView)rowView.findViewById(R.id.textViewisSentFlag);
                viewHolder.imageViewToSent = (ImageView)rowView.findViewById(R.id.imageViewToSent);
                viewHolder.checkBoxToSend = (CheckBox)rowView.findViewById(R.id.checkBoxToSend);

                rowView.setTag(viewHolder);
            }
            else{
                viewHolder = (ViewHolder) rowView.getTag();


            }

            viewHolder.ref = position;
            Log.i("InfoLog","viewHolder.ref = position; "+viewHolder.ref); 
            viewHolder.textViewisSentFlag.setText(isSentAlList.get(position)); 
            Bitmap blob = BitmapFactory.decodeByteArray(imageAlList.get(position), 0, imageAlList.get(position).length);
            viewHolder.imageViewToSent.setImageBitmap(blob);
            viewHolder.checkBoxToSend.setClickable(true);


            if(checked.containsKey(""+viewHolder.ref))   ///if this id is present as key in hashmap  
            { 
                Log.i("InfoLog","checked.containsKey "+viewHolder.ref);
            if(checked.get(""+viewHolder.ref).equals("true"))  //also check whether it is true or false to check/uncheck checkbox 
            {
                Log.i("InfoLog","checked.get(position) "+viewHolder.ref); 
                viewHolder.checkBoxToSend.setChecked(true);
            }
            else
                viewHolder.checkBoxToSend.setChecked(false);

            }
            else
                viewHolder.checkBoxToSend.setChecked(false);

            viewHolder.checkBoxToSend.setOnCheckedChangeListener(new OncheckchangeListner(viewHolder));
            return rowView;

        }//End of method getView
    }//End of class ImageInfo



    class ViewHolder{

        private TextView textViewisSentFlag = null;
        private ImageView imageViewToSent = null;
        private CheckBox checkBoxToSend = null;

        int ref;
    }//End of class ViewHolder

and here is my oncheckchangedlistener

   class OncheckchangeListner implements OnCheckedChangeListener{

            ViewHolder viewHolder = null; 
            public OncheckchangeListner(ViewHolder viHolder)
            {
                viewHolder =  viHolder;  
            }
            @Override 
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {

                if(viewHolder.checkBoxToSend.equals(buttonView))
                {       
                if(!isChecked)
                {
                    Log.i("InfoLog","checked.get before "+checked.get(""+viewHolder.ref));
                    checked.put(""+viewHolder.ref,"false");
                    Log.i("InfoLog","checked.get after "+checked.get(""+viewHolder.ref));
                }
                else
                    checked.put(""+viewHolder.ref,"true");


                }
                else
                    Log.i("InfoLog","i m in checkchange ");
            }

        }


来源:https://stackoverflow.com/questions/7610267/storing-the-state-of-checkbox-in-listview-while-using-custom-baseadapter-in-andr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!