日常的开发中有可能会涉及到一些添加或者删除表格的操作,这时候需要用到GridView,在Android系统布局定义里,它是一个网络形状的Layout,我们可以用Adapter对其进行填充,并且可也自定义GridView的相关属性。
1. 布局文件:activity_main.xml
<LinearLayout 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" tools:context="com.example.mygridview.MainActivity" android:orientation="vertical" > <DatePicker android:id="@+id/dp1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" /> <TextView android:id="@+id/txt1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" /> <GridView android:id="@+id/gv1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_weight="1" /> <GridView android:id="@+id/gv2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_weight="1" /> </LinearLayout>
2. 两个gridView.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="4dip" > <TextView android:id="@+id/ItemText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="TextView01" > </TextView> </RelativeLayout>
3. 主代码:
package com.example.mygridview;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
public GridView gridView1, gridView2;
private ArrayList<HashMap<String, Object>> lstImageItem, lstItem;
private SimpleAdapter saImageItems, saImages;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView1 = (GridView) findViewById(R.id.gv1);
gridView2 = (GridView) findViewById(R.id.gv2);
// 生成动态数组,并且转入数据
lstImageItem = new ArrayList<HashMap<String, Object>>();
lstItem = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 10; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemText", "NO." + String.valueOf(i));
lstImageItem.add(map);
}
saImageItems = new SimpleAdapter(this, lstImageItem,
R.layout.act_gridview, new String[] { "ItemText" },
new int[] { R.id.ItemText });
saImages = new SimpleAdapter(this, lstItem, R.layout.act_gridview1,
new String[] { "ItemText" }, new int[] { R.id.ItemText });
gridView1.setAdapter(saImageItems);
gridView2.setAdapter(saImages);
gridView1.setOnItemClickListener(new ItemClickListener());
gridView2.setOnItemClickListener(new ItemClickListener1());
}
class ItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
@SuppressWarnings("unchecked")
HashMap<String, Object> item = (HashMap<String, Object>) parent
.getItemAtPosition(position);
setTitle((String) item.get("ItemText"));
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemText", (String) item.get("ItemText"));
lstItem.add(map);
lstImageItem.remove(position);
saImageItems.notifyDataSetChanged();
saImages.notifyDataSetChanged();
}
}
class ItemClickListener1 implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
@SuppressWarnings("unchecked")
HashMap<String, Object> item = (HashMap<String, Object>) parent
.getItemAtPosition(position);
setTitle((String) item.get("ItemText"));
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemText", (String) item.get("ItemText"));
lstImageItem.add(map);
lstItem.remove(position);
saImageItems.notifyDataSetChanged();
saImages.notifyDataSetChanged();
}
}
}