Android实战简易教程(GridView动态添加Item)

本例子实现在GridView的最后显示一个增加图片,点击图片动态增加内容item。

1.main.xml:

[html]  view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <GridView  
  7.         android:id="@+id/gv_test"  
  8.         android:numColumns="3"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent" />  
  11.   
  12. RelativeLayout>  

2.grid_item.xml:

[html]  view plain copy
  1. xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <ImageView  
  8.         android:id="@+id/item"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.   
  12. LinearLayout>  

3.GridViewAdapter.java:

[java]  view plain copy
  1. package com.yayun.gridviewdemo;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.content.Context;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.widget.BaseAdapter;  
  10. import android.widget.ImageView;  
  11.   
  12. public class GridViewAdapter extends BaseAdapter {  
  13.     private Context context;  
  14.     private List list;  
  15.     LayoutInflater layoutInflater;  
  16.     private ImageView mImageView;  
  17.   
  18.     public GridViewAdapter(Context context, List list) {  
  19.         this.context = context;  
  20.         this.list = list;  
  21.         layoutInflater = LayoutInflater.from(context);  
  22.     }  
  23.   
  24.     @Override  
  25.     public int getCount() {  
  26.         return list.size()+1;//注意此处  
  27.     }  
  28.   
  29.     @Override  
  30.     public Object getItem(int position) {  
  31.         return list.get(position);  
  32.     }  
  33.   
  34.     @Override  
  35.     public long getItemId(int position) {  
  36.         return position;  
  37.     }  
  38.   
  39.     @Override  
  40.     public View getView(int position, View convertView, ViewGroup parent) {  
  41.   
  42.         convertView = layoutInflater.inflate(R.layout.grid_item, null);  
  43.         mImageView = (ImageView) convertView.findViewById(R.id.item);  
  44.         if (position < list.size()) {  
  45.             mImageView.setBackgroundResource(list.get(position));  
  46.         }else{  
  47.             mImageView.setBackgroundResource(R.drawable.pic3);//最后一个显示加号图片  
  48.         }  
  49.         return convertView;  
  50.     }  
  51.   
  52. }  

4.MainActivity.java:

[java]  view plain copy
  1. package com.yayun.gridviewdemo;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.os.Bundle;  
  7. import android.support.v7.app.ActionBarActivity;  
  8. import android.view.View;  
  9. import android.widget.AdapterView;  
  10. import android.widget.AdapterView.OnItemClickListener;  
  11. import android.widget.GridView;  
  12. import android.widget.Toast;  
  13.   
  14. public class MainActivity extends ActionBarActivity {  
  15.     private List mDatas;  
  16. private GridView mGridView;  
  17. private GridViewAdapter adapter;  
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.         mGridView=(GridView) findViewById(R.id.gv_test);  
  23.           
  24.         initDatas();  
  25.         adapter=new GridViewAdapter(MainActivity.this,mDatas);  
  26.         mGridView.setAdapter(adapter);  
  27.         mGridView.setOnItemClickListener(new OnItemClickListener() {  
  28.   
  29.             @Override  
  30.             public void onItemClick(AdapterView parent, View view,  
  31.                     int position, long id) {  
  32.                 if(position==parent.getChildCount()-1){  
  33.                     mDatas.add(R.drawable.pic1);  
  34.                     Toast.makeText(MainActivity.this"您点击了添加"1).show();  
  35.                     adapter=new GridViewAdapter(MainActivity.this, mDatas);  
  36.                     mGridView.setAdapter(adapter);  
  37.                     adapter.notifyDataSetChanged();  
  38.                 }  
  39.                   
  40.             }  
  41.         });  
  42.           
  43.     }  
  44.     private void initDatas() {  
  45.         mDatas=new ArrayList<>();  
  46.         mDatas.add(R.drawable.pic1);  
  47.         mDatas.add(R.drawable.pic1);  
  48.         mDatas.add(R.drawable.pic1);  
  49.         mDatas.add(R.drawable.pic1);  
  50.         mDatas.add(R.drawable.pic1);  
  51.           
  52.     }  
  53.   
  54.       
  55.     }  

5.运行项目:

Android实战简易教程(GridView动态添加Item)_第1张图片

你可能感兴趣的:(Android)