2

我有一个从数据库中提取图像 url 的列表。一旦它获得了 url,我使用以下代码将它们存储在 drawables 上:

 private Drawable LoadImageFromWebOperations(String url){
    try{
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src name");
        return d;
    }catch (Exception e) {
        System.out.println("Exc="+e);
        return null;
    }
}

然后我将drawable保存到一个链接列表中并继续拉其他图像url,一旦完成,图片就会显示出来。我遇到的问题是它可以很好地提取网址,但是当它显示在应用程序上时,前两张图片很好,但是当我滚动查看第三张图片时,它会显示第一张的图片,对此有什么想法吗? ?

以下是 getview 和自定义列表的代码:

private class RowData {

    protected int mId;
    protected String mTitle;

    RowData(int id,String title){
    mId=id;
    mTitle = title;
    }
    @Override
    public String toString() {
            return mId+" "+mTitle+" ";
    }
}


private class CustomAdapter extends ArrayAdapter<RowData> {

    public CustomAdapter(Context context, int resource,
                    int textViewResourceId, List<RowData> objects) {
            super(context, resource, textViewResourceId, objects);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;

            TextView title = null;
            TextView date = null;
            TextView detail = null;
            ImageView i11=null;
            String postDate;

            RowData rowData= getItem(position);

            if(null == convertView){
                    convertView = mInflater.inflate(R.layout.newspg, null);
                    holder = new ViewHolder(convertView);
                    convertView.setTag(holder);                   
            }
            holder = (ViewHolder) convertView.getTag();    

            title = holder.gettitle();     
            title.setText(rowData.mTitle);
            postDate = getpostDate(news, rowData.mTitle );
            Log.i("Date",postDate);
            date = holder.getDate();     
            date.setText(postDate);



            i11=holder.getImage(position);
            Log.i("pos",Integer.toString(position));
            //i11.setImageResource(imgid[0]);

            return convertView;
    }




    private class ViewHolder {      
        private View mRow;
        private TextView title = null;
        private TextView date = null;
        private TextView detail = null;
        private ImageView i11=null;            

            public ViewHolder(View row) {
            mRow = row;
            }

            public TextView gettitle() {
                    if(null == title){
                            title = (TextView) mRow.findViewById(R.id.title);
                    }
                    return title;
            }

            public TextView getDate() {
                if(null == date){
                        date = (TextView) mRow.findViewById(R.id.date);
                }
                return date;
        }


            public ImageView getImage(int position) {
                if(null == i11){

                    i11 = (ImageView) mRow.findViewById(R.id.img); 

                    i11.setImageDrawable(newArtists.get(position).getNewsPic());

            }

            return i11;
    }

}
}
4

1 回答 1

0

发生这种情况是因为列表视图重用了以前的行(视图包括您的图片)来构建新行。所以你必须注意这一点。例如,你可以隐藏ImageView,直到你得到好的图片放到ImageView中,然后让它可见。

于 2012-08-07T20:57:03.113 回答