android - 在 Android 中防止来自 ListView 的重复图像字符串

标签 android string list listview

在我的代码中,我想从相机拍摄图像并将其字符串存储在 encodedimagestring 变量中。但是我的代码两次存储相同的图像字符串。我应该在这里设置什么逻辑检查来防止重复的字符串。请帮我。

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

最佳答案

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

应该可以解决问题。

关于android - 在 Android 中防止来自 ListView 的重复图像字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343886/

相关文章:

c# - 从字符串末尾修剪十六进制

python - 根据另一个列表随机替换字典列表中的元素

java - 将github android源码导入到eclipse

c - 如何从调用者分配的内存空间中捕获由被调用者组织的字符串数组?

android - 基准测试电池安卓

c - 初始化一个指向字符串的指针

string - 混合(字符和数字)变量的逻辑查询

java - 我们从 java 列表中获取所需输出的效率如何?

android - 相对布局动态textView

android - PhoneNumberUtils.formatNumber 不可用于单元测试