如何隐藏特定项目的的ImageView不知道持何立场? [英] How can I hide ImageView of specific item without knowing position?

查看:170
本文介绍了如何隐藏特定项目的的ImageView不知道持何立场?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要的是当列表视图项没有形象,ImageView的将是gone.Like这样的:

有图片:

在这里输入的形象描述

没有映像:

在这里输入的形象描述

目前,我这样做,这个code添加到适配器的getView方法

 如果(mImageList.size()== 0){
       mPostHolder.mChosenImage.setVisibility(View.GONE);
}否则如果(mImageList.size()→1){    的for(int i = 0; I< mImageList.size();我++){
        mPostHolder.mChosenImage.setVisibility(View.VISIBLE);
        如果(((MemosModel)mMemoList.get(位置))。getmMemoId()==(mImageList.get(ⅰ).getMemoId())){
        BMP位图= BitmapFactory.de codeFILE(mImageList.get(I).getPath());
        mPostHolder.mChosenImage.setImageBitmap(BMP);                        }
                    }
                }

但它只是做了还是可见的,不特定的人的所有备忘录的ImageView的像我想要的。

注意:

1 - 我有两个表的数据库:备忘录,象,象表
有1列MemoId包含备忘录的ID。

2 - ImageList的是图像的对象这是我从图像获得数组
表。

3 - MemoList为备注对象,这是我从备忘录得到的阵列

4 - 我不能在备忘录对象中创建图像的变量,那就是要求

我挣扎着这个问题了几个小时。请帮我解决这个!

编辑:添加适配器

  @覆盖
    公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup){
    如果(convertView == NULL){         convertView = mInflater.inflate(R.layout.item_timeline_post,父母,假);
         mPostHolder =新TimeLineHolder()新PostHolder()。          mPostHolder.mStatus =(TextView中)convertView.findViewById(R.id.txt_status);
          mPostHolder.mChosenImage =(ImageView的)convertView.findViewById(R.id.img_posted);          convertView.setTag(mPostHolder);
     }其他{
            mPostHolder =(PostHolder)convertView.getTag();
                }    mPostHolder.mStatus.setText(((MemoObject)mMemoList.get(位置))getStatusText());    如果(mImageList.size()== 0){
            mPostHolder.mChosenImage.setVisibility(View.GONE);
  }否则如果(mImageList.size()→1){        的for(int i = 0; I< mImageList.size();我++){
            如果((mMemoList.get(位置))。getmMemoId()==(mImageList.get(ⅰ).getMemoId())){
                mPostHolder.mChosenImage.setVisibility(View.VISIBLE);
                BMP位图= BitmapFactory.de codeFILE(mImageModelList.get(I).getPath());
                mPostHolder.mChosenImage.setImageBitmap(BMP);        }
      }
   }


  

图片和备忘录阵列从我MainActivity.The数组传递是通过得到的只是简单的SELECT * FROM ...查询。



解决方案

试试这个:

 如果(mImageList.size()== 0){
    mPostHolder.mPostedImage.setVisibility(View.GONE);
}否则如果(mImageList.size()→1){    的for(int i = 0; I< mImageList.size();我++){
        如果(((MemosModel)mMemoList.get(位置))。getmMemoId()==(mImageList.get(ⅰ).getMemoId())){
            如果(mImageList.get(ⅰ).getPath()。等于(空)|| mImageList.get(ⅰ).getPath()。等于()){
                BMP位图= BitmapFactory.de codeFILE(mImageList.get(I).getPath());
                mPostHolder.mChosenImage.setImageBitmap(BMP);
            }其他{
                mPostHolder.mChosenImage.setVisibility(View.GONE);
            }
        }
    }
}

logcat的:

  2月八日至19日:36:18.725:E / ID(13070):929043207145744_951230201593711
2月8日至19日:36:18.729:E / PATH(13070):空
2月8日至19日:36:18.729:E / ID(13070):929043207145744_951230201593711
2月8日至19日:36:18.737:E / PATH(13070):/mnt/sdcard/lifelog/929043207145744_951223071594424.png
2月8日至19日:36:18.737:E / ID(13070):929043207145744_951223071594424
2月8日至19日:36:18.737:E / PATH(13070):/mnt/sdcard/lifelog/929043207145744_951223071594424.png
2月8日至19日:36:18.737:E / ID(13070):929043207145744_951223071594424

What I want is when the item in listview not have image, the ImageView will be gone.Like this:

Have image:

Not have image:

Currently,I do this by add this code to getView method of adapter

if (mImageList.size() == 0) {
       mPostHolder.mChosenImage.setVisibility(View.GONE);
} else if (mImageList.size() > 1) {

    for (int i = 0; i < mImageList.size(); i++) {
        mPostHolder.mChosenImage.setVisibility(View.VISIBLE);
        if (((MemosModel) mMemoList.get(position)).getmMemoId() == (mImageList.get(i).getMemoId())) {
        Bitmap bmp = BitmapFactory.decodeFile(mImageList.get(i).getPath());
        mPostHolder.mChosenImage.setImageBitmap(bmp);

                        }
                    }
                }

But it is just make the ImageView of all Memos gone or visible,not specific ones like I want.

Note:

1 - I have a database with two table: "Memo" and "Image" and "Image" table have 1 column "MemoId" which contain the id of Memo.

2 - ImageList is the array of Image objects which I get from "Image" table.

3 - MemoList is the array of Memo objects which I get from "Memo".

4 - I can't create image variable in Memo object,that's the request.

I struggled with this problem for hours. Please help me to solve this!

EDIT: Add adapter

     @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
    if (convertView == null) {

         convertView = mInflater.inflate(R.layout.item_timeline_post, parent, false);
         mPostHolder = new TimeLineHolder().new PostHolder();

          mPostHolder.mStatus = (TextView) convertView.findViewById(R.id.txt_status);
          mPostHolder.mChosenImage = (ImageView) convertView.findViewById(R.id.img_posted);

          convertView.setTag(mPostHolder);
     } else {
            mPostHolder = (PostHolder) convertView.getTag();
                }

    mPostHolder.mStatus.setText(((MemoObject) mMemoList.get(position)).getStatusText());

    if (mImageList.size() == 0) {
            mPostHolder.mChosenImage.setVisibility(View.GONE);
  } else if (mImageList.size() > 1) {

        for (int i = 0; i < mImageList.size(); i++) {
            if (( mMemoList.get(position)).getmMemoId() == (mImageList.get(i).getMemoId())) {
                mPostHolder.mChosenImage.setVisibility(View.VISIBLE);
                Bitmap bmp = BitmapFactory.decodeFile(mImageModelList.get(i).getPath());
                mPostHolder.mChosenImage.setImageBitmap(bmp);

        }
      }
   }

The Image and Memo array is passed from my MainActivity.The array is get by just simple "Select * from..." query.

解决方案

Try this:

if (mImageList.size() == 0) {
    mPostHolder.mPostedImage.setVisibility(View.GONE);
} else if (mImageList.size() > 1) {

    for (int i = 0; i < mImageList.size(); i++) {
        if (((MemosModel) mMemoList.get(position)).getmMemoId() == (mImageList.get(i).getMemoId())) {
            if (mImageList.get(i).getPath().equals(null) || mImageList.get(i).getPath().equals("")) {
                Bitmap bmp = BitmapFactory.decodeFile(mImageList.get(i).getPath());
                mPostHolder.mChosenImage.setImageBitmap(bmp);
            } else {
                mPostHolder.mChosenImage.setVisibility(View.GONE); 
            }
        }
    }
}

Logcat:

08-19 02:36:18.725: E/ID(13070): 929043207145744_951230201593711
08-19 02:36:18.729: E/PATH(13070): null
08-19 02:36:18.729: E/ID(13070): 929043207145744_951230201593711
08-19 02:36:18.737: E/PATH(13070): /mnt/sdcard/lifelog/929043207145744_951223071594424.png
08-19 02:36:18.737: E/ID(13070): 929043207145744_951223071594424
08-19 02:36:18.737: E/PATH(13070): /mnt/sdcard/lifelog/929043207145744_951223071594424.png
08-19 02:36:18.737: E/ID(13070): 929043207145744_951223071594424

这篇关于如何隐藏特定项目的的ImageView不知道持何立场?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆