2011-09-30 4 views
2

나는 이미지, 텍스트 및 체크 박스가있는 listview를 가지고 있는데, BaseAdapter를 사용하여 이것을 부풀렸다. 내가 선택한 이미지 만 보내고 싶지만 체크 박스의 상태를 저장하는 방법은 무엇입니까? 내가 baseadapter를 사용하고있어 내가 잘못되었을 수 있습니다. 다른 방법으로 제안 할 수 있습니다.안드로이드에서 사용자 정의 BaseAdapter를 사용하는 동안 체크 박스의 상태를 listview에 저장 하시겠습니까?

답변

2

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 

여기에 코드 내 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 "); 
      } 

     } 
+1

무엇인가'checked' 유형 내 Baseadapter 아래에서 찾아보세요? – SMR

+0

은 OncheckchangeListner 서브 클래스입니까? –

+0

이 작업을 수행 했습니까? –