源代码:
package com.mobimtech.com;
import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.AdapterView.OnItemClickListener;
public class GridViewDemo extends Activity { /** Called when the activity is first created. */ GridView grid; ComplexLayoutAdapter adapter;
int image[] = { R.drawable.look, R.drawable.map, R.drawable.delete }; String name[] = { "查看信息", "地理位置", "删除好友" };
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); grid= (GridView) findViewById(R.id.gride); adapter=new ComplexLayoutAdapter(this); grid.setAdapter(adapter); grid.setOnItemClickListener(new OnItemClickListener(){
@Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub setTitle(name[arg2]); } }); }
class ComplexLayoutAdapter extends BaseAdapter {
Activity a; public ComplexLayoutAdapter(Activity a){ this.a=a; } @Override public int getCount() { // TODO Auto-generated method stub return image.length; }
@Override public Object getItem(int position) { // TODO Auto-generated method stub return null; }
@Override public long getItemId(int position) { // TODO Auto-generated method stub return position; }
@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub return composeLayout(position); } public View composeLayout(int i){ LinearLayout layout=new LinearLayout(a); layout.setOrientation(LinearLayout.VERTICAL); ImageView iv=new ImageView(a); iv.setImageResource(image[i]); layout.addView(iv,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT)); TextView tv=new TextView(a); tv.setGravity(Gravity.CENTER_HORIZONTAL); tv.setTextColor(Color.WHITE); tv.setText(name[i]); layout.addView(tv,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT)); return layout; }
}}
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <GridView android:id="@+id/gride" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="3" /> </LinearLayout>