加载Gridview是不稳定的

时间:2016-12-06 19:37:41

标签: android gridview

我正在尝试使用包含产品信息的卡片加载gridview。

我不确定这是否是处理此类数据加载的最佳方式。

首先我设置我的适配器:

angular.module('BlurAdmin.pages') .factory('authFactory', function (sessionFactory, $http) { var authFactory = {}; ... authFactory.isPartner = function () { if(sessionFactory.get('role') == "partner"){ return true; }; }; authFactory.isCustomer = function () { if(sessionFactory.get('role') == "customer"){ return true; }; }; authFactory.isAdmin = function () { if(sessionFactory.get('role') == "admin"){ return true; }; }; authFactory.currentRole = function () { return sessionFactory.get("role"); } return authFactory; }) .factory('sessionFactory', function () { var sessionFactory = {}; ... sessionFactory.get = function (key){ return localStorage.getItem(key); }; ... return sessionFactory; });

产品是一个包含产品对象的对象,产品对象内部具有图像,名称,价格等值。

cardView.setAdapter(new productCardAdapter(getActivity(),products));

我设置了产品

public class productCardAdapter extends BaseAdapter

然后在

this.products = products;

我根据索引public View getView(int i, View view, ViewGroup viewGroup) {

设置值
i

加载时会产生持续接近1秒的波动过渡。

我有什么方法可以改进吗?

2 个答案:

答案 0 :(得分:0)

首先,enable StrictMode。然后它会向你大喊你正在主应用程序线程上进行磁盘I / O.你不会对你在主应用程序线程上进行昂贵的位图解码操作大吼大叫,尽管这也是一个问题。

然后,正如njzk2建议的那样,使用the vast array of image-loading libraries for Android之一,例如Picasso,以异步方式加载图像。

答案 1 :(得分:0)

Google的示例代码https://developer.android.com/guide/topics/ui/layout/gridview.html正在设置错误示例

修复该示例代码,而不是:

imageView.setImageResource(mThumbIds[position]);

你想使用一个库,我使用Glide,在一个线程中加载图像。像这样:

public View getView(int position, View convertView, ViewGroup parent) {
    CircleImageView imageView;

    if (convertView == null) {
        // not recycled
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
        imageView = (CircleImageView) view;
    } else {
        // recycled
        imageView = (CircleImageView) convertView;
    }

    Glide
            .with(parent.getContext())
            .load(mThumbIds[position])
            .placeholder(R.mipmap.ic_launcher)//REQUIRED
            .dontAnimate()//REQUIRED
            .into(imageView);

    //imageView.setImageResource(mThumbIds[position]);

    return imageView;
}

在此处获取CircleImageView:https://github.com/hdodenhof/CircleImageView 在这里获得滑行:https://github.com/bumptech/glide

顺便说一下,R.layout.item_image的XML是:

<?xml version="1.0" encoding="utf-8"?>

<de.hdodenhof.circleimageview.CircleImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/image_avatar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    app:civ_border_width="1dp"
    app:civ_border_color="#FF000000"/>