集册 Android 百战经典 百战经典第十一战-GridView动态添加Item

百战经典第十一战-GridView动态添加Item

欢马劈雪     最近更新时间:2020-08-04 05:37:59

176

在实际开发项目中,本实例经常被用到,GridView的最后项显示一个增加图片的按钮,点击该按钮可以动态增加Item。

1.main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent" >  
    <GridView  
        android:id="@+id/gv_test"  
        android:numColumns="3"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent" />  
</RelativeLayout>  

布局文件很简单,在相对布局中引入了一个gridview控件,numColumns属性指定了一行显示3项。

2.grid_item.xml:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical" >  
    <ImageView  
        android:id="@+id/item"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content" />  
</LinearLayout>  

gridview的子布局就一个imageview控件,用于显示图片。

3.GridViewAdapter.java:

package com.yayun.gridviewdemo; 
//省略导入 
public class GridViewAdapter extends BaseAdapter {  
    private Context context;  
    private List<Integer> list;  
    LayoutInflater layoutInflater;  
    private ImageView mImageView;  
    public GridViewAdapter(Context context, List<Integer> list) {  
        this.context = context;  
        this.list = list;  
        layoutInflater = LayoutInflater.from(context);  
    }  
    @Override  
    public int getCount() {  
        return list.size()+1;//注意此处  
    }  
    @Override  
    public Object getItem(int position) {  
        return list.get(position);  
    }  
    @Override  
    public long getItemId(int position) {  
        return position;  
    }  
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        convertView = layoutInflater.inflate(R.layout.grid_item, null);  
        mImageView = (ImageView) convertView.findViewById(R.id.item);  
        if (position < list.size()) {  
            mImageView.setBackgroundResource(list.get(position));  
        }else{  
            mImageView.setBackgroundResource(R.drawable.pic3);//最后一个显示加号图片  
        }  
        return convertView;  
    }  
} 

创建适配器类,继承自BaseAdapter适配器,适配器类构造方法传入上下文对象context和数据集合List。要注意的地方,getCount方法返回的数量要加1,这个就是存放“+”的地方。在getView方法中,进行判断,最后一个位置设置加号图片。

4.MainActivity.java:

展开阅读全文