【问题标题】:Implement universal image loader on custom listvew Android在自定义列表视图 Android 上实现通用图像加载器
【发布时间】:2016-04-14 04:21:04
【问题描述】:

我该如何实现呢?我一直在到处寻找,我迷路了。如果有人能启发我,那就太好了。这是我目前的自定义adapter

public class CustomListAdapter extends ArrayAdapter<String> 
{
private final Activity context;
private final String[] itemname;
private final String[] imageUrls;

public CustomListAdapter(Activity context, String[] itemname, String[] imageUrls) {
    super(context, R.layout.mylist, itemname);
    this.context = context;
    this.itemname = itemname;
    this.imageUrls = imageUrls;
    //ImageLoader imageLoader = new ImageLoader(activity.getApplicationContext());
}

public View getView(int position,View view,ViewGroup parent) {
    LayoutInflater inflater=context.getLayoutInflater();
    View rowView=inflater.inflate(R.layout.mylist, null,true);
    TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);
    txtTitle.setText(itemname[position]);
    //imageLoader.displayImage(imageUrls[position], imageView, null);
    extratxt.setText("Description "+itemname[position]);
    return rowView;
  };
}

请注意,上面的代码有一些错误。首先,在activity.getApplicationContext():我不知道为什么。对于第二个,imageLoader 说它无法解析符号。

【问题讨论】:

标签: android listview universal-image-loader


【解决方案1】:

请检查以下代码

public class CustomListAdapter extends ArrayAdapter<String> 
{
private final Activity context;
private final String[] itemname;
private final String[] imageUrls;
ImageLoader imageLoader;
public CustomListAdapter(Activity context, String[] itemname, String[] imageUrls) {
    super(context, R.layout.mylist, itemname);

    this.context = context;
    this.itemname = itemname;
    this.imageUrls = imageUrls;
    imageLoader = new ImageLoader(context);
}

public View getView(int position,View view,ViewGroup parent) {
    LayoutInflater inflater=context.getLayoutInflater();
    View rowView=inflater.inflate(R.layout.mylist, null,true);

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);

    txtTitle.setText(itemname[position]);
    imageLoader.displayImage(imageUrls[position], imageView, null);
    extratxt.setText("Description "+itemname[position]);
    return rowView;
  }
}

不要忘记在应用程序类中初始化 ImageLoader。

【讨论】:

  • activity.getApplicartionContext() 仍然给我错误...以及如何进行初始化?这是我第一次使用通用图像加载器,所以我在这里不知所措。
【解决方案2】:

好的,我解决了我的问题,也许我应该在这里分享给未来的人们:)

首先我必须像这样在主要活动中(不是在 customlistadapter 中)初始化 ImageLoader

imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseContext()));

接下来我从 customlistadapter 调用 ImageLoader:

MainActivity.imageLoader.displayImage(imageUrls[position],imageView);

以及 ImageLoader 的声明:

public static ImageLoader imageLoader;

我不知道如果声明为 public 和 static 是否会导致任何问题,但是嘿它可以工作。

【讨论】:

    【解决方案3】:
    Try implementing the below code in your adapter 
    
             ImageLoader imageLoader = ImageLoader.getInstance();
    
            imageLoader.init(ImageLoaderConfiguration.createDefault(context));
            DisplayImageOptions option = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(1000)).cacheInMemory(true)
                    .cacheOnDisc(true).resetViewBeforeLoading(true)
                    .showImageForEmptyUri(R.drawable.ic_launcher)
                    .showImageOnFail(R.drawable.ic_launcher)
                    .showImageOnLoading(R.drawable.ic_launcher).bitmapConfig(Bitmap.Config.RGB_565).build();
    
    
            imageLoader.displayImage(imageurl,imageview,option);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多