andoird:GridView的练习

部署到手机效果:

andoird:GridView的练习_第1张图片

总共四个步骤

1.准备数据源

2.新建适配器(SimpleAdapter)

3.GridView加载适配器

4.GirdView配置事件监听器

activity_main.xml 

添加一个GridView控件,设置列数为3

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="#000000"
     >

    <GridView
        android:id="@+id/gridView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:numColumns="3"
        android:verticalSpacing="10dp"
      >
    </GridView>

</LinearLayout>

适配器加载的xml. 对于GirdView中的一个单元格   图片在上 文字在下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >
    
    <ImageView 
        android:id="@+id/image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_launcher"
        />
    
    <TextView 
        android:id="@+id/text"
        android:layout_marginTop="5dp"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textColor="#ffffff"
        android:text="名称"
        />
    

</LinearLayout>

然后是MainActivity

package com.example.phonedesktop;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener {

	private int img[] = { R.drawable.address_book, R.drawable.calendar,
			R.drawable.camera, R.drawable.clock, R.drawable.games_control,
			R.drawable.messenger, R.drawable.ringtone, R.drawable.settings,
			R.drawable.speech_balloon, R.drawable.weather, R.drawable.world,
			R.drawable.youtube };
	private String text[] = { "通讯录", "日历", "照相机", "时钟", "游戏", "短信", "铃声", "设置",
			"语音", "天气", "浏览器", "视频" };
	private List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
	private SimpleAdapter adapter;
	private GridView gridView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gridView = (GridView) findViewById(R.id.gridView);
		//新建适配器
		adapter = new SimpleAdapter(MainActivity.this, getData(),
				R.layout.item, new String[] { "image", "text" }, new int[] {
						R.id.image, R.id.text });
		//GridView加载适配器
		gridView.setAdapter(adapter);
		//GridView事件监听器
		gridView.setOnItemClickListener(this);
	}

	//准备数据源,泛型的map
	private List<Map<String, Object>> getData() {
		// TODO Auto-generated method stub
		for (int i = 0; i < img.length; i++) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("image", img[i]);
			map.put("text", text[i]);
			dataList.add(map);
		}
		return dataList;
	}

	//触发事件。只知道联系人和浏览器的intent action  ~~
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {
		// TODO Auto-generated method stub
		switch (position) {
		case 0:
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_GET_CONTENT);
			intent.setType("vnd.android.cursor.item/phone");
			startActivity(intent);
			break;
		case 10:
			Uri uri=Uri.parse("http://www.baidu.com");
			Intent intent1=new Intent(Intent.ACTION_VIEW,uri);
			startActivity(intent1);
			break;
		default :
			Toast.makeText(this, "你选择的是" + text[position], Toast.LENGTH_LONG).show();
			break;
		}
	}
}


其中的这行代码:

	adapter=new SimpleAdapter(context, data, resource, from, to)

contex是上下文,data是数据源,resource是单元格的布局文件,from是map集合中的的键名,to就是要把map上对应键的值放到哪个控件上

比如文中

		adapter = new SimpleAdapter(MainActivity.this, getData(),
				R.layout.item, new String[] { "image", "text" }, new int[] {
						R.id.image, R.id.text });

要把map集合中键名为image的值放到R.id.image控件上,键名为text放到R.id.text控件上



你可能感兴趣的:(SimpleAdapter,GridView)