Android中ListView的设计问题

时间:2012-08-19 03:05:19

标签: android listview

我正在尝试在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;
}

1 个答案:

答案 0 :(得分:0)

经过一番搜索,找到了一些很好的参考资料。谢谢大家。   - Using AsyncTask to load Images in ListView   - http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html