Android中GridView实现互相添加和删除
日常的开发中有可能会涉及到一些添加或者删除表格的操作,这时候需要用到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(); } } }