GridView使用示例(三)

TestGridViewActivity如下:

package cn.com.baidu;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
//Demo描述:
//GridView基础知识使用示例
//PS:这是以前刚学Android的时候写的了,今天整理博客还是舍不得扔掉
//2014年8月4日23:19:41

//注意:
//1 GridView和ListView的数据的绑定非常相似.在hashMap.put("col1", drawableIDs[i]);处我们往此hashMap里
//  放入的是图片的ID(即在R文件中生成的图片ID),而不是真正的图片数据.在绑定时系统会根据此ID自动加载对应的图片
//2 方法 new SimpleAdapter(this, createDataList(), R.layout.grid_row, new String []{"col1","col2"}, new int []{R.id.ImageView_grid_row,R.id.TextView_grid_row});
//  gridView.setAdapter(simpleAdapter);此方法的参数和使用ListView时的适配器参数基本上一样的
//  第一个参数:上下文对象
//  第二个参数:要被绑定的数据(List)
//  第三个参数:接收此绑定的数据的布局
//  第四个参数:被绑定数据的键
//  第五个参数:把这些键分别绑到布局的哪个控件中
//  第二和三个参数是从宏观来描述的,第四和五个参数是从微观的角度进一步描述的
//3 此例中分别监听获得焦点和被点击的处理情况.这点很有借鉴意义
public class TestGridViewActivity extends Activity {
	private GridView gridView;
	private ArrayList<Map<String,Object>> arrayList;
	private TextView textView;
    int drawableIDs []={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e};
    int jjs []={R.string.jja,R.string.jjb,R.string.jjc,R.string.jjd,R.string.jje};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gridView=(GridView) findViewById(R.id.GridView);
        SimpleAdapter simpleAdapter=
        new SimpleAdapter(this,
        		          createDataList(),
        		          R.layout.grid_row,
        		          new String []{"col1","col2"},
        		          new int []{R.id.ImageView_grid_row,R.id.TextView_grid_row});
        //为GridView设置适配器
        gridView.setAdapter(simpleAdapter);
        //当条目获得焦点时的处理
        gridView.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                textView=(TextView) findViewById(R.id.TextView);
                //获得焦点的条目.每个条目都是一个LinearLayout
				LinearLayout linearLayout=(LinearLayout) view;
				//获得此条目中的TextView显示的名字.从0开始,所以为1
				TextView childTextView=(TextView) linearLayout.getChildAt(1);
				//然后在另外一个(即主TextView)中显示
				textView.setText(childTextView.getText().toString());
			}
			@Override
			public void onNothingSelected(AdapterView<?> parent) {}
		});

        //当条目获被点击时的处理.同上.
        gridView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
				textView=(TextView) findViewById(R.id.TextView);
				LinearLayout linearLayout=(LinearLayout) view;
				TextView childTextView=(TextView) linearLayout.getChildAt(1);
				textView.setText(childTextView.getText().toString());
			}
		});

    } 

    public List createDataList(){
		arrayList=new ArrayList<Map<String,Object>>();
		for(int i=0;i<jjs.length;i++){
			HashMap<String, Object> hashMap=new HashMap<String, Object>();
			//第一列为照片
			hashMap.put("col1", drawableIDs[i]);
			//第二列为名字
			hashMap.put("col2", this.getString(jjs[i]));
			arrayList.add(hashMap);
		}
		return arrayList;
	}
}

main.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
    android:id="@+id/TextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/tip"
    android:textColor="@color/white"
    android:textSize="24dip"
    >
    </TextView>
    <GridView
    android:id="@+id/GridView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:verticalSpacing="5dip"
    android:horizontalSpacing="5dip"
    android:stretchMode="columnWidth"
    >
   	</GridView>

</LinearLayout>

grid_row.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:id="@+id/linerLayout_grid_row"
    >
    <ImageView
	   android:id="@+id/ImageView_grid_row"
	   android:scaleType="fitXY"
	   android:layout_width="100dip"
	   android:layout_height="98dip"
	>
	</ImageView>
	<TextView
	    android:id="@+id/TextView_grid_row"
	    android:layout_width="140dip"
	    android:layout_height="wrap_content"
	    android:textColor="@color/white"
        android:textSize="24dip"
        android:paddingLeft="5dip"
	>
    </TextView>

</LinearLayout>
时间: 2024-09-17 17:03:53

GridView使用示例(三)的相关文章

SeaJS入门教程系列之完整示例(三)

 这篇文章主要介绍了SeaJS入门教程系列之完整示例,演示了一个完整的SeaJS开发例子,需要的朋友可以参考下 一个完整的例子 上文说了那么多,知识点比较分散,所以最后我打算用一个完整的SeaJS例子把这些知识点串起来,方便朋友们归纳回顾.这个例子包含如下文件:   1.index.html--主页面. 2.sea.js--SeaJS脚本. 3.init.js--init模块,入口模块,依赖data.jquery.style三个模块.由主页面载入. 4.data.js--data模块,纯json

CYQ.Data 轻量数据层之路 应用示例三 Aop切入留言系统--操作日志(二十七)

前言: 在8月份时,那时曾用CYQ.Data 1.2版本演示过一个完整的示例,留言版:详见:CYQ.Data 轻量数据层之路 应用示例一 留言版(四) 本篇将使用2.N系列版本,在不改动原来留言版系统一行代码的情况下,实现其数据库操作日志功能. 最新版本下载见:CYQ.Data 轻量数据层之路 bug反馈.优化建议.最新框架下载     正文步骤:   一:建表 1:增加一个日志操作表[ActionLogs],这个少不了,表结构如下: 2:创建表的数据库脚本如下: 创建ActionLogs表  

Android与Javascript交互示例(三)

MainAcivity如下: package cn.testjavascriptdialog; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; import android.content.DialogInterface; import a

Java并发编程示例(三):线程中断_java

一个多线程的Java程序,直到所有线程执行完成,整个程序才会退出.(需要注意的是,是所有非后台线程(non-daemon thread)执行完成:如果一个线程执行了System.exit()方法,程序也会退出.)有时,你想中止一个线程的执行,例如你想退出程序,或者你想取消一个正在执行的任务等. Java提供了中断机制,可以让我们显式地中断我们想中止执行的线程.中断机制的一个特征就是我们可以检查线程是否已经被中断,进而决定是否响应中止请求.线程也可以忽略中止请求,继续执行. 在本节,我们所开发的示

GridView使用示例(一)

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > &l

GridView使用示例(二)

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.

Android开发中GridView用法示例

本文实例讲述了Android开发中GridView用法.分享给大家供大家参考,具体如下: Android的GridView控件用于把一系列的空间组织成一个二维的网格显示出来,应用的比较多的就是组合图片显示.下面我就详细讲一个例子. 首先写一个类继承BaseAdapter 1. Java代码 package com.yarin.android.Examples_04_19; import android.content.Context; import android.view.View; impo

Android中属性动画Property Animation使用示例(三)

MainActivity如下: package cc.cn; import android.os.Bundle; import android.view.View; import android.widget.RelativeLayout; import android.animation.AnimatorInflater; import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; impor

详解Android中使用Notification实现进度通知栏(示例三)_Android

我们在使用APP的过程中,软件会偶尔提示我们进行版本更新,我们点击确认更新后,会在通知栏显示下载更新进度(已知长度的进度条)以及安装情况(不确定进度条),这就是我们今天要实现的功能.实现效果如下: 在代码实现功能前,我们先解释进度条的两种状态: (1)显示一个已知长度的进度条指示器(Displaying a fixed-duration progress indicator) 为了能够显示一个确定的进度条,通过调用setProgress() setProgress(max, progress,