Android 通过自定义适配器在Listview的ImageView中动态添加图像

Android 通过自定义适配器在Listview的ImageView中动态添加图像,android,android-listview,android-imageview,android-arrayadapter,Android,Android Listview,Android Imageview,Android Arrayadapter,我有一个listview,它有一个imageview。我想在listview中显示图像(大约600个)。为此,我想制作这样一个listview,它只加载一些图像(大约10-15),当我到达listview的底部时,它会加载更多的10-15个图像。我使用了定制的ArrayAdapter class MyAdapter extends ArrayAdapter<String>{ Bitmap[] bmp = null; Context context; Uri[

我有一个listview,它有一个imageview。我想在listview中显示图像(大约600个)。为此,我想制作这样一个listview,它只加载一些图像(大约10-15),当我到达listview的底部时,它会加载更多的10-15个图像。我使用了定制的ArrayAdapter

class MyAdapter extends ArrayAdapter<String>{

    Bitmap[] bmp = null;
    Context context;
    Uri[] URIs;
    LayoutInflater layout;


    public MyAdapter(Context context, int resource, Uri[] URIs,
            List<String> objects, Bitmap[] bmp) {
        super(context, resource, objects);
        // TODO Auto-generated constructor stub
        this.bmp = bmp;
        this.context = context;
        this.URIs = URIs;
    }

    class MyViewHolder {
        ImageView imageView;

        public MyViewHolder(View v) { // TODO Auto-generated constructor
            // stub
            imageView = (ImageView) v.findViewById(R.id.imageView_row);
        }
    }

    @Override
    public int getCount() { // TODO Auto-generated method stub
        return URIs.length;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        MyViewHolder holder = null;
        if (row == null) {
            layout = (LayoutInflater) context
                    .getSystemService(getActivity().LAYOUT_INFLATER_SERVICE);
            row = layout.inflate(R.layout.row_hometab_pic, parent, false);
            holder = new MyViewHolder(row);
            row.setTag(holder);
        } else {
            holder = (MyViewHolder) row.getTag();
        }
        Picasso.with(getActivity()).load(URIs[position]).resize(300, 300)
                .centerInside().into(holder.imageView);
        return row;
    }
}
class MyAdapter扩展了ArrayAdapter{
位图[]bmp=null;
语境;
Uri[]Uri;
平面布局;
公共MyAdapter(上下文上下文、int资源、Uri[]Uri、,
列出对象,位图[]bmp){
超级(上下文、资源、对象);
//TODO自动生成的构造函数存根
this.bmp=bmp;
this.context=上下文;
this.URIs=URIs;
}
类MyViewHolder{
图像视图图像视图;
公共MyViewHolder(视图v){//TODO自动生成构造函数
//存根
imageView=(imageView)v.findViewById(R.id.imageView_行);
}
}
@凌驾
public int getCount(){//TODO自动生成的方法存根
返回URIs.length;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
MyViewHolder=null;
if(行==null){
布局=(LayoutFlater)上下文
.getSystemService(getActivity().LAYOUT\u充气机\u服务);
行=布局。充气(R.layout.row\u hometab\u pic,父级,false);
holder=新的MyViewHolder(行);
row.setTag(支架);
}否则{
holder=(MyViewHolder)行。getTag();
}
Picasso.with(getActivity()).load(URI[position]).resize(300300)
.centerInside().插入(holder.imageView);
返回行;
}
}

请帮助……

好的,以下是您可以做到的:

  • 通过扩展
    BaseAdapter
    创建一个类
  • 在适配器中,保留一个名为
    itemsToDisplay
    的变量
  • getCount()
    中返回此变量
  • getView()
    中返回自定义视图
  • 无论在何处显示列表,请在底部添加一个按钮,上面写着:
    加载更多图像
    或其他内容
  • 单击该按钮将使
    项增加显示
  • 在适配器上调用
    notifyDataSetChanged
    ,以在
    itemsToDisplay
    中进行更改后显示更多图像