마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

그리드뷰 체크박스 체크한 갯수를 구하고 싶습니다.

0 추천
  // 아이템 체크시 현재 체크상태를 가져와서 반대로 변경(true -> false, false -> true)시키고
  // 그 결과를 다시 ArrayList의 같은 위치에 담아준다
  // 그리고 어댑터의 notifyDataSetChanged() 메서드를 호출하면 리스트가 현재 보이는
  // 부분의 화면을 다시 그리기 시작하는데(getView 호출) 이러면서 변경된 체크상태를 
  // 파악하여 체크박스에 체크/언체크를 처리한다. 
  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
  {
    ImageAdapter adapter = (ImageAdapter) arg0.getAdapter();
    ThumbImageInfo rowData = (ThumbImageInfo)adapter.getItem(position);
    boolean curCheckState = rowData.getCheckedState();
    
    rowData.setCheckedState(!curCheckState);
    
    mThumbImageInfoList.set(position, rowData);
    adapter.notifyDataSetChanged();
  }
  
  
  // ***************************************************************************************** //
  // Image Adapter Class 
  // ***************************************************************************************** //
  static class ImageViewHolder
  {
    ImageView ivImage;
    CheckBox chkImage;
  }
  
  private class ImageAdapter extends BaseAdapter
  {
    private Context mContext;
    private int mCellLayout;
    private LayoutInflater mLiInflater;
    private ArrayList<ThumbImageInfo> mThumbImageInfoList;
    
    public ImageAdapter(Context c, int cellLayout, ArrayList<ThumbImageInfo> thumbImageInfoList)
    {
      mContext = c;
      mCellLayout = cellLayout;
      mThumbImageInfoList = thumbImageInfoList;
      
      mLiInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    
    public int getCount()
    {
      return mThumbImageInfoList.size();
    }

    public Object getItem(int position)
    {
      return mThumbImageInfoList.get(position);
    }

    public long getItemId(int position)
    {
      return position;
    }
    
    public View getView(int position, View convertView, ViewGroup parent)
    {
      if (convertView == null)
      {
        convertView = mLiInflater.inflate(mCellLayout, parent, false);
        ImageViewHolder holder = new ImageViewHolder();
        
        holder.ivImage = (ImageView) convertView.findViewById(R.id.ivImage);
        holder.chkImage = (CheckBox) convertView.findViewById(R.id.chkImage);
        
        convertView.setTag(holder);
      }

      final ImageViewHolder holder = (ImageViewHolder) convertView.getTag();
      
      if (((ThumbImageInfo) mThumbImageInfoList.get(position)).getCheckedState())
        holder.chkImage.setChecked(true);
      else
        holder.chkImage.setChecked(false);

      if (!mBusy)
      {
        try
        {
          String path = ((ThumbImageInfo) mThumbImageInfoList.get(position)).getData();
          
          BitmapFactory.Options option = new BitmapFactory.Options();
          
          if (new File(path).length() > 100000)
            option.inSampleSize = 10;
          else
            option.inSampleSize = 2;
          
          Bitmap bmp = BitmapFactory.decodeFile(path, option);
          holder.ivImage.setImageBitmap(bmp);  
          holder.ivImage.setVisibility(0x00000000);
          setProgressBarIndeterminateVisibility(false);
        }
        catch (Exception e)
        {
          e.printStackTrace();
          setProgressBarIndeterminateVisibility(false);
        }
      }
      else
      {
        setProgressBarIndeterminateVisibility(true);
        holder.ivImage.setVisibility(0x00000004);
      }
        
      return convertView;
    }
  }
  

******************************* ThumbImageInfo.java ********************************

public class ThumbImageInfo
{
private String id;
private String data;
private boolean checkedState;

public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getData()
{
return data;
}
public void setData(String data)
{
this.data = data;
}
public boolean getCheckedState()
{
return checkedState;
}
public void setCheckedState(boolean checkedState)
{
this.checkedState = checkedState;
}
}

 

안녕하세요.

그리드뷰에서 이미지와 체크박스를 둬서 갤러리를 구현한 후 이미지를 선택할 수 있도록 하는 예제인데요.

위 코드는 핵심코드입니다.

제가 이미지 체크 갯수에 제한을 두고 싶은데 체크박스에 체크한 갯수가 잘 불러와지지 않아 질문 올립니다.

어디 부분에서 어떻게 구현을 해야 할지 아시는분 도와주시면 감사하겟습니다~! 

 

 

랑뚜 (220 포인트) 님이 2014년 4월 3일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...