Android ListView落后于ImageLoader
我正在使用androidimageloader.com,当图像加载到列表中时,会有一些闪烁,这与使用它的演示和应用程序大不相同。我在应用程序类中有imageLoader,但不明白它为什么会闪烁。这些图片是用户的Facebook个人资料图片。这是什么原因造成的?这是我的适配器:Android ListView落后于ImageLoader,android,android-listview,lazy-loading,Android,Android Listview,Lazy Loading,我正在使用androidimageloader.com,当图像加载到列表中时,会有一些闪烁,这与使用它的演示和应用程序大不相同。我在应用程序类中有imageLoader,但不明白它为什么会闪烁。这些图片是用户的Facebook个人资料图片。这是什么原因造成的?这是我的适配器: public class FriendAdapter extends BaseAdapter { private Typeface tf; LayoutInflater inflater; priv
public class FriendAdapter extends BaseAdapter {
private Typeface tf;
LayoutInflater inflater;
private String[] nameEvents;
private String[] urls;
private ArrayList<Friend> friends;
ImageManager imageManager;
ImageTagFactory imageTagFactory;
public FriendAdapter(Activity activity, ArrayList<Friend> friends) {
this.friends = friends;
setData(this.friends);
tf = Typeface.createFromAsset(activity.getAssets(),
"fonts/Roboto-Condensed.ttf");
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageManager = BuzzbabaApplication.getImageLoader();
imageTagFactory = new ImageTagFactory(activity, R.drawable.no_pic_icon);
}
public View getView(int position, View convertView, ViewGroup parent) {
FriendView fView;
if (convertView == null) {
convertView = inflater.inflate(R.layout.friend_layout, null);
fView = new FriendView();
fView.name = (TextView) convertView.findViewById(R.id.friendName);
fView.name.setTypeface(tf);
fView.pic = (ImageView) convertView.findViewById(R.id.profilePic);
convertView.setTag(fView);
} else {
fView = (FriendView) convertView.getTag();
}
fView.name.setText(nameEvents[position]);
// HomeScreen.imageLoader.DisplayImage(urls[position], fView.pic);
((ImageView) fView.pic).setTag(imageTagFactory.build(urls[position]));
imageManager.getLoader().load(fView.pic);
return convertView;
}
public void setData(ArrayList<Friend> friends) {
nameEvents = new String[friends.size()];
urls = new String[friends.size()];
int index = 0;
for (Friend f : friends) {
String pos = f.getName();
int num = f.getNumEvents();
if (num == 1) {
pos = pos + "\n" + num + " event";
} else {
pos = pos + "\n" + num + " events";
}
nameEvents[index] = pos;
urls[index] = f.getPictureURL();
index++;
}
}
static class FriendView {
TextView name;
ImageView pic;
}
public int getCount() {
return friends.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
}
公共类FriendAdapter扩展了BaseAdapter{
专用字体tf;
充气机;
私有字符串[]nameEvents;
私有字符串[]URL;
私人ArrayList朋友;
图像管理器图像管理器;
ImageTagFactory ImageTagFactory;
public FriendAdapter(活动,ArrayList friends){
这个。朋友=朋友;
setData(this.friends);
tf=Typeface.createFromAsset(activity.getAssets(),
“fonts/Roboto Condensed.ttf”);
充气器=(充气器)活动
.getSystemService(上下文布局\充气机\服务);
imageManager=BuzzbabaApplication.getImageLoader();
imageTagFactory=新imageTagFactory(活动,R.drawable.no_pic_图标);
}
公共视图getView(int位置、视图转换视图、视图组父视图){
FriendView;
if(convertView==null){
convertView=充气机。充气(R.layout.friend_layout,null);
fView=新的FriendView();
fView.name=(TextView)convertView.findViewById(R.id.friendName);
fView.name.setTypeface(tf);
fView.pic=(ImageView)convertView.findViewById(R.id.profilePic);
convertView.setTag(fView);
}否则{
fView=(FriendView)convertView.getTag();
}
fView.name.setText(nameEvents[position]);
//主屏幕.imageLoader.DisplayImage(URL[position],fView.pic);
setTag(imageTagFactory.build(url[position]);
imageManager.getLoader().load(fView.pic);
返回视图;
}
公共void setData(ArrayList好友){
nameEvents=新字符串[friends.size()];
URL=新字符串[friends.size()];
int指数=0;
对于(朋友f:朋友){
字符串pos=f.getName();
int num=f.getNumEvents();
如果(num==1){
pos=pos+“\n”+num+“事件”;
}否则{
pos=pos+“\n”+num+“事件”;
}
nameEvents[索引]=位置;
URL[index]=f.getPictureURL();
索引++;
}
}
静态类FriendView{
文本视图名称;
图像视图;
}
public int getCount(){
return friends.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
}
一旦图像下载并在列表的某个缓存区域滚动,就会像黄油一样平滑,但当它们下载时,情况并非如此,它们会闪烁进来,破坏用户界面体验。您好@user1212314,我也在使用ImageLoader加载图像,但出现空指针异常。你能看看这个,帮我看看哪里出了问题吗?