mainActivity如下:
package cn.c;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.ImageView;/** * 需求描述: * 自訂GridView的Adapter展示圖片 * * 注意:去掉GridView點擊時的背景色 * android:listSelector="@android:color/transparent" */public class MainActivity extends Activity { private GridView mGridView; private ArrayList<RowImages> mArrayList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mGridView=(GridView) findViewById(R.id.gridView); mArrayList=new ArrayList<RowImages>(); for (int i = 0; i < 10; i++) { RowImages images=new RowImages(R.drawable.a, R.drawable.b, R.drawable.a); mArrayList.add(images); } GridViewAdapter adapter=new GridViewAdapter(MainActivity.this, mArrayList); mGridView.setAdapter(adapter); mGridView.setOnItemClickListener(new ItemClickListenerImpl()); } private class ItemClickListenerImpl implements OnItemClickListener{public void onItemClick(AdapterView<?> parent, View view, int position,long id) {System.out.println("點擊了第"+(position+1)+"行");ImageView imageView_left=(ImageView) view.findViewById(R.id.imageView_left);imageView_left.setOnClickListener(new OnClickListener() {public void onClick(View v) { System.out.println("xxxxxx 點擊了左邊的圖片");}});ImageView imageView_center=(ImageView) view.findViewById(R.id.imageView_center);imageView_center.setOnClickListener(new OnClickListener() {public void onClick(View v) { System.out.println("xxxxxx 點擊了中間的圖片");}});ImageView imageView_right=(ImageView) view.findViewById(R.id.imageView_right);imageView_right.setOnClickListener(new OnClickListener() {public void onClick(View v) { System.out.println("xxxxxx 點擊了右邊的圖片");}});} }}
GridViewAdapter如下:
package cn.c;import java.util.ArrayList;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;public class GridViewAdapter extends BaseAdapter{ private Context mContext; private ArrayList<RowImages> mArrayList; public GridViewAdapter(Context context,ArrayList<RowImages> arrayList){this.mContext=context;this.mArrayList=arrayList;}public int getCount() {if (mArrayList==null) {return 0;} else {return mArrayList.size();}}public Object getItem(int position) {if (mArrayList==null) {return null;} else { return mArrayList.get(position);}}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder=null;if (convertView==null) {holder=new ViewHolder();convertView=LayoutInflater.from(mContext).inflate(R.layout.gridview_row_layout, null,false);holder.imageView_left=(ImageView) convertView.findViewById(R.id.imageView_left);holder.imageView_center=(ImageView) convertView.findViewById(R.id.imageView_center);holder.imageView_right=(ImageView) convertView.findViewById(R.id.imageView_right);convertView.setTag(holder); } else { holder=(ViewHolder) convertView.getTag(); }if (mArrayList!=null) {RowImages images=this.mArrayList.get(position);if (holder.imageView_left!=null) {holder.imageView_left.setImageResource(images.getImg_left());}if (holder.imageView_center!=null) {holder.imageView_center.setImageResource(images.getImg_center());}if (holder.imageView_right!=null) {holder.imageView_right.setImageResource(images.getImg_right());}}return convertView;}private class ViewHolder{ImageView imageView_left;ImageView imageView_center;ImageView imageView_right;}}
RowImages如下:
package cn.c;public class RowImages {private int img_left;private int img_center;private int img_right;public RowImages() {super();}public RowImages(int img_left, int img_center, int img_right) {super();this.img_left = img_left;this.img_center = img_center;this.img_right = img_right;}public int getImg_left() {return img_left;}public void setImg_left(int img_left) {this.img_left = img_left;}public int getImg_center() {return img_center;}public void setImg_center(int img_center) {this.img_center = img_center;}public int getImg_right() {return img_right;}public void setImg_right(int img_right) {this.img_right = img_right;}}
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/gridView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:verticalSpacing="10dip" android:listSelector="@android:color/transparent" /></RelativeLayout>
gridview_row_layout.xml如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imageView_left" android:layout_width="80dip" android:layout_height="80dip" android:src="@drawable/ic_launcher" android:layout_alignParentLeft="true" /> <ImageView android:id="@+id/imageView_center" android:layout_width="80dip" android:layout_height="80dip" android:src="@drawable/ic_launcher" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageView_right" android:layout_width="80dip" android:layout_height="80dip" android:src="@drawable/ic_launcher" android:layout_alignParentRight="true" /> </RelativeLayout>