2013-10-13 4 views
1

내 코드에서 카메라에서 이미지를 가져 와서 해당 문자열을 encodedimagestring 변수에 저장하려고합니다. 하지만 내 코드는 동일한 이미지 문자열을 두 번 저장합니다. 중복 된 문자열을 방지하기 위해 여기에 어떤 논리 검사를 설정해야합니까? 도와주세요.안드로이드에서 ListView에서 이미지 문자열 복제 방지

public View getView(final int position, View convertView, ViewGroup parent) { 
    final Bitmap image=(Bitmap)(images.get(position)); 
    final ViewHolder holder; 
    if (convertView == null) { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    image.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    byte[] b = bytes.toByteArray(); 
    encodedImageString = Base64.encodeToString(b, Base64.DEFAULT); 
    StringImages.add(encodedImageString); 
    holder = new ViewHolder(); 
    convertView = mInflater.inflate(R.layout.imageview2, null); 
    holder.image = (ImageView) convertView.findViewById(R.id.imageView2); 
    holder.Delete=(Button)convertView.findViewById(R.id.buttonClose); 
    convertView.setTag(holder); 
    } else { 
    holder = (ViewHolder) convertView.getTag(); 
    } 
    BitmapFactory.Options factoryOptions = new BitmapFactory.Options(); 
    int imageWidth = factoryOptions.inDensity=70; 
    int imageHeight = factoryOptions.inDensity=65; 
    Bitmap Scaled =Bitmap.createScaledBitmap(images.get(position), imageWidth, 
              imageHeight, true); 
    holder.image.setImageBitmap(Scaled); 
    holder.image.setTag(position); 
    holder.Delete.setTag(position); 
    holder.image.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     // TODO Auto-generated method stub 
     final Dialog imgDialog = new Dialog(view.getContext(), 
         android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 

     imgDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     imgDialog.setCancelable(false); 
     // layout imageview2 is used because when i use simple imageview layout 
     // dialogue with imageview and closebutton, 
     // every taken image at instance will not be shown in dialogue. 
     imgDialog.setContentView(R.layout.imageview); 
     Button btnClose = (Button)imgDialog.findViewById(R.id.btnIvClose); 
     ImageView ivPreview = (ImageView)imgDialog.findViewById(R.id.image1); 
     ivPreview.setImageBitmap(images.get(position)); 
     btnClose.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      imgDialog.dismiss(); 
     } 
     }); 
     imgDialog.show(); 
     myAdapter.notifyDataSetChanged(); 
     listviewattachment.setSelection(myAdapter.getCount()+1); 
     } 
    }); 
    holder.Delete.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     // TODO Auto-generated method stub 
     int tag = (Integer) view.getTag(); 
     if ((position) != (images.size())) { 
      images.remove(images.get(tag)); 
      images.remove(image); 
      StringImages.remove(position); 
      myAdapter.notifyDataSetChanged(); 
     } 
     } 
    }); 
    return convertView ; 
    } 
} 

답변

2
if (!StringImages.contains(encodedImageString)) { 
    StringImages.add(encodedImageString); 
} 

트릭을 할해야합니다.

+0

great.thanks really – user2768215

+0

희망 사항 : 그렇다면 upvoting/accepting을 고려하여 다른 사용자가 올바른 답변을 쉽게 찾을 수 있도록하십시오. – ssantos

+0

내 질문도 투표하십시오 .. 감사합니다. – user2768215