(Android)从URL加载listview中的异步映像

时间:2012-07-20 06:19:49

标签: android listview asynchronous loadimage android-query

我的老板说我必须使用Android查询,我找到了这个网站:http://code.google.com/p/android-query/wiki/ImageLoading 但我尝试过:

  aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");

在我的代码中,但我收到此错误: “aq无法解决” 我需要做什么来初始化aq,我是否必须导入一些lib?

这是我的列表视图适配器:     公共静态类ListViewAdapterWall扩展BaseAdapter {         private LayoutInflater mInflater;

    public ListViewAdapterWall(Context context) {

        mInflater = LayoutInflater.from(context);

    }

    public int getCount() {
        return ListviewContentWall.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

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

        ListContent holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.listviewinflate, null);

            holder = new ListContent();
            holder.wallImage = (ImageView) convertView
                    .findViewById(R.id.wallImage1);
            holder.wallButton = (ImageButton) convertView
                    .findViewById(R.id.wallButton1);


            convertView.setTag(holder);
        } else {

            holder = (ListContent) convertView.getTag();
        }

        AQuery aq = new AQuery(convertView);

        aq.id(R.id.wallImage1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");
        //holder.wallImage.setBackgroundDrawable(ListviewContentWall.get(position));
        //holder.wallButton.setBackgroundDrawable(ListviewContentWall.get(position));
        //holder.text2.setText(ListviewContent2.get(position));

        return convertView;
    }

3 个答案:

答案 0 :(得分:1)

AQuery是View的包装器。

按如下方式初始化

AQuery aq = new AQuery(imageView);

此代码段与您提到的页面相同!

答案 1 :(得分:0)

我必须在互联网上搜索lib:android-query-0.22.10.jar并将它放在我的libs文件夹中才能使用

答案 2 :(得分:0)

Android Query ImageLoading具有recycle()方法。

来自android_query的Javadoc说,recycle()方法为

  

public T recycle(查看根目录)     回收此AQuery对象。该方法旨在避免重复重新创建AQuery对象,例如在列表适配器getView方法中。

     

参数:

     

root - 循环使用的AQuery的新根。

     

返回:

     

这里是源调整上面的方法。

AQuery listAq = new AQuery(this);

public ListViewAdapterWall(Context context) {
    mInflater = LayoutInflater.from(context);
}

public int getCount() {
    return ListviewContentWall.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

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

    ListContent holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.listviewinflate, null);

        holder = new ListContent();
        holder.wallImage = (ImageView) convertView
                .findViewById(R.id.wallImage1);
        holder.wallButton = (ImageButton) convertView
                .findViewById(R.id.wallButton1);


        convertView.setTag(holder);
    } else {

        holder = (ListContent) convertView.getTag();
    }

    AQuery aq = listAq.recycle(convertView);

    aq.id(R.id.wallImage1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");
    //holder.wallImage.setBackgroundDrawable(ListviewContentWall.get(position));
    //holder.wallButton.setBackgroundDrawable(ListviewContentWall.get(position));
    //holder.text2.setText(ListviewContent2.get(position));

    return convertView;
}