【问题标题】:Prevent Dupliate image Strings from ListView in Android防止Android中ListView中的重复图像字符串
【发布时间】:2013-10-21 01:17:06
【问题描述】:

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

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

【问题讨论】:

    标签: android string list listview


    【解决方案1】:
    if (!StringImages.contains(encodedImageString)) {
        StringImages.add(encodedImageString); 
    }
    

    应该做的伎俩。

    【讨论】:

    • 希望对您有所帮助 :) 如果是这样,请考虑支持/接受,以便其他用户可以轻松找到正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多