如何隐藏特定项目的的ImageView不知道持何立场? [英] How can I hide ImageView of specific item without knowing position?
问题描述
我要的是当列表视图项没有形象,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_951223071594424What 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屋!