android - GridView 图像未正确加载

标签 android gridview

我有一个带有 Image 和 TextView 的 GridView。使用异步任务从 URL 加载图像。

这是 GridView 的代码:

public class GridviewAdapter extends BaseAdapter {
    private ArrayList<String> listImgUrl;
    private ArrayList<String> listCost;
    private ArrayList<String> listItem;
    private ArrayList<String> listStore;

    private Activity activity;
//  private Context context;

    public GridviewAdapter(Context context) {
        super();
    //  this.context = context;


    }

    public void GridviewAdapterInit(Activity activity, ArrayList<String> listImgUrl,
            ArrayList<String> listCost, ArrayList<String> listItem,
            ArrayList<String> listStore) {
        this.activity = activity;

        this.listImgUrl = listImgUrl;
        this.listCost = listCost;
        this.listItem = listItem;
        this.listStore = listStore;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return listImgUrl.size();
    }

    @Override
    public String getItem(int position) {
        // TODO Auto-generated method stub
        return listImgUrl.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public static class ViewHolder {
        public ImageView imgViewFlag;
        public TextView tvCost;
        public TextView tvItem;
        public TextView tvStore;
    }

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder view;
        LayoutInflater inflator = activity.getLayoutInflater();

        if (convertView == null) {
            view = new ViewHolder();
            convertView = inflator.inflate(R.layout.gridview_row, null);

            view.imgViewFlag = (ImageView) convertView
                    .findViewById(R.id.imageView1);
            view.tvCost = (TextView) convertView.findViewById(R.id.tvCost);
            view.tvItem = (TextView) convertView.findViewById(R.id.tvItem);
            view.tvStore = (TextView) convertView.findViewById(R.id.tvStore);



            convertView.setTag(view);
        } else {
            view = (ViewHolder) convertView.getTag();
        }


            LoadImageFromURL(listImgUrl.get(position), view.imgViewFlag);
            view.tvCost.setText(listCost.get(position));
            view.tvItem.setText(listItem.get(position));
            view.tvStore.setText(listStore.get(position));

        return convertView;
    }

    private void LoadImageFromURL(String url, ImageView imgView)

    {
        new ImageViewUpdator(imgView).execute(url);

    }

}

使用上面的代码,如果图像为 6 个或更少,图像将被正确加载。加载更多图片时会出现图片在错误位置重复、少数图片未加载等问题。但是要加载的图像数量是可以的。 不确定是什么导致了问题。

感谢帮助

最佳答案

如果你想从 url 加载图像,那么你需要使用 picasso

Picasso is a powerful image downloading and caching library for Android.

只需一行代码即可解决您的图片加载问题:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

关于android - GridView 图像未正确加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305247/

相关文章:

android - AudioRecord 将原始 PCM 数据写入/读取到文件

android - 我们如何在 Android Q 中访问扩展文件?

android - 如何动态刷新ListView?

javascript - Android Studio 与 TheMovieDB.com API 包装器 : unable to start activity ComponentInfo and lots of other errors

android - GridLayout(不是GridView)如何均匀拉伸(stretch)所有 child

asp.net - 在 ASPX 页面中格式化 Gridview 显示

asp.net - 在 UpdatePanel 中使用 GridView 时数据不同步

asp.net - ObjectDataSource 触发两次,或单独触发

wpf - 获取 GridView 以在单击时选择行(不仅仅是单击文本)

gridview - VerticalGridView 的焦点处理