起初我收到消息,我将它们添加到TextVIEw中,并在ImageVIEw中放置虚拟图像:
for(int i = 0; i < messages.size(); i++) { FrameLayout f1 = new FrameLayout(this); linearLayout l1 = new linearLayout(this); linearLayout l2 = new linearLayout(this); im = new ImageVIEw(this); TextVIEw tv = new TextVIEw(this); tv.setText(messages.get(i).getmessage()); im.setimageResource(R.drawable.person); l1.addVIEw(tv); l2.addVIEw(im); f1.addVIEw(l1); f1.addVIEw(l2); ((linearLayout)findVIEwByID(R.ID.linearlayoutMessage)).addVIEw(f1);}
过了一段时间,我得到原始图像.我的目的是用原始图像替换虚拟图像.为了达到这个目的,我正在使用imagevIEw.getID(),不幸的是我得到了imagevIEw的最后一个ID.但我需要获得每个个人的imagevIEw ID.
用真实图像改变虚拟图像的最佳方法是什么?
解决方法 看起来您需要将每个imageVIEw ID存储在每条消息的地图中 – > imageVIEw如下:Map<Message,Long> messageMapPing = new HashMap<Message,Long>();for(int i = 0; i < messages.size(); i++) { FrameLayout f1 = new FrameLayout(this); linearLayout l1 = new linearLayout(this); linearLayout l2 = new linearLayout(this); im = new ImageVIEw(this); TextVIEw tv = new TextVIEw(this); //add mapPing messageMapPing.put(messages.get(i),im.getID()); tv.setText(messages.get(i).getmessage()); im.setimageResource(R.drawable.person); l1.addVIEw(tv); l2.addVIEw(im); f1.addVIEw(l1); f1.addVIEw(l2); ((linearLayout)findVIEwByID(R.ID.linearlayoutMessage)).addVIEw(f1);}
然后,当需要将图像延迟加载到现有的imageVIEws时,您只需要通过消息映射查找imageVIEw ID引用:
(总猜猜你的代码看起来像什么)
for(int i = 0; i < messages.size(); i++){ Image image = queryServerForImage(messages.get(i).getimageID()); ImageVIEw imageVIEw = ((ImageVIEw)findVIEwByID(messageMapPing.get(messages.get(i)))); //some conversion & seteup may be needed to get image into proper format imageVIEw.setimageBitmap(image);}
您可以使用异步任务执行类似的 *** 作.您可以使用关联的资源ID跨越消息ImageVIEw创建循环中的每一个,并让每个asyc任务更新网络响应中的ui.
总结以上是内存溢出为你收集整理的android-imageview – 在Android中获取图像视图的ID的问题?全部内容,希望文章能够帮你解决android-imageview – 在Android中获取图像视图的ID的问题?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)