我正在尝试使用包含产品信息的卡片加载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秒的波动过渡。
我有什么方法可以改进吗?
答案 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"/>