我正在尝试在ListView中显示Feed消息。如果我在初始化ListView之前拥有所有可用内容,那么它的工作效果非常好。现在我正在尝试获取图像,因为图像很昂贵,我正在尝试进行延迟加载。我创建了一个异步http函数来获取对象。
据我所知,给定ListView的所有单元格都是在ArrayAdapter对象的单个实例中创建的。现在问题是,当async-http函数返回数据时,对实际ImageView的引用已经被另一个不同单元格的实例替换。结果,图像开始随处出现。
我认为这是一个设计缺陷,就像我试图做的那样。
关于如何解决这个问题,有什么更好的建议吗? (虽然仍然可以使用async-http调用进行延迟加载)
谢谢!
编辑:我尝试使用ListView和ExpandableListView,这是ExpandableListView实现的代码。
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activity_feed_exlist_child_row, null);
}
String msgId = data.get(childPosition).get("msgid");
String picId = data.get(childPosition).get("fileName");
TextView txtMsg = (TextView) convertView.findViewById(R.id.txtMsg);
txtMsg.setText(data.get(childPosition).get("msg"));
ImageView imgStatusMsgBackgroud = (ImageView) convertView.findViewById(R.id.imgStatusMsgBackground);
String requestURL = "picture.php?action=getPicture&picid=" + picId;
MyHTTPRequest httpReq = new MyHTTPRequest(requestURL, this);
httpReq.startAsynchronous();
return convertView;
}
答案 0 :(得分:0)