第23章:GridView的用法

GridView的属性和方法如下:

android:columnWidth-->设置列的宽度-->方法:setColumnwidth(int)

android:graity-->设置对齐方式:-->方法:setGrity(int)

android:horizontalSpacing-->设置各元素之间的水平间距-->方法:setHorizontalSpacing(int)

android:verticalSpacing-->设置各元素之间的垂直间距-->方法:setVerticalSpacing(int)

android:numColumns-->设置列数-->方法:setNumColumns(int)

android:stretchMode-->设置拉伸模式-->方法:setStretchMode(int)

实例如下:

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"
    android:orientation="vertical"
    android:layout_margin="5dp"
    tools:context=".MainActivity">

    <GridView
        android:id="@+id/gridView"
        android:numColumns="4"
        android:horizontalSpacing="1pt"
        android:verticalSpacing="1pt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <ImageView
        android:id="@+id/imageView"
        android:layout_gravity="center_horizontal"
        android:layout_width="240px"
        android:layout_height="240px" />

</LinearLayout>

每一格的局部布局文件:image_call.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/imageView3"
    android:layout_width="30pt"
    android:layout_height="30pt">

</ImageView>

MainActivity.java

package cn.edu.hpu.acm.gridViewTest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;

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

public class MainActivity extends AppCompatActivity {
    //定义属性
    private GridView gridView;
    private ImageView imageView;
    //定义Image数组
    int[] imagesId = {
            R.drawable.a1,
            R.drawable.a2,
            R.drawable.a3,
            R.drawable.a4,
            R.drawable.a5,
            R.drawable.a6,
            R.drawable.a7,
            R.drawable.a8
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //得到控件
        gridView = (GridView) findViewById(R.id.gridView);
        imageView = (ImageView) findViewById(R.id.imageView);
        //声明List<E>数组,这里的E为Map<String,?>
        List<Map<String,Object>> listItems = new ArrayList<Map<String, Object>>();
        //设置Map<String,?>数组的键值
        for (int i=0;i<imagesId.length;i++){
            Map<String,Object> listItem = new HashMap<String, Object>();
            listItem.put("imageView3",imagesId[i]);
            //添加到List数组中
            listItems.add(listItem);
        }
        //设置SimpleAdapter属性
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,listItems,
                R.layout.image_cell,new String[]{"imageView3"},
                new int[]{R.id.imageView3});
        //设置GridView的Adapter属性
        gridView.setAdapter(simpleAdapter);
        //设置选择事件,这里没有什么用可以不要
        gridView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                imageView.setImageResource(imagesId[position]);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        //设置点击事件,点击事件可以是任何东西
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                imageView.setImageResource(imagesId[position]);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 07:36:08

第23章:GridView的用法的相关文章

JavaScript高级程序设计(第三版)学习笔记20、21、23章

第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值:字符串,数值,布尔值,null,不支持js特殊值:undefined 对象:一组无序的键值对 数组:一组有序的值的列表 不支持变量,函数或对象实例 注:JSON的字符串必须使用双引号,这是与JavaScript字符串最大的区别 对象 { "name":"Nicholas"

Lua_第23章 C API 纵览

第23章 C  API 纵览 Lua是一个嵌入式的语言,意味着 Lua 不仅可以是一个独立运行的程序包也可以是一个用来嵌入其他应用的程序库.你可能觉得奇怪:如果 Lua 不只是独立的程序,为什么到目前为止贯穿整本书我们都是在使用 Lua 独立程序呢? 这个问题的答案在于 Lua 解释器(可执行的 lua).Lua解释器是一个使用 Lua 标准库实现的独立的解释器,它是一 个很小的应用(总共不超过500 行的代码).解释器负责程序和使用者的接口:从使用者那里获取文件或者字符串,并传给 Lua 标准

Spring Framework Reference Documentation 3.2.8.RELEASE 第23章中文翻译

23. JMS (Java Message Service) [中文翻译 by [email protected]] 23.1 介绍 Spring提供了一个JSM集成框架,简化了JMS API的使用.这点很像Spring对JDBC的集成. JMS大致提供生产消息和消费消息两类功能.JmsTemplate类用来生产消息和同步接收消息[译注:接收消息也就是消费消息].为了异步接收消息(异步接收消息类似于JavaEE的消息驱动Bean(Message-Driven Bean,MDB),Spring提供

MySQL必知应会-第23章-使用存储过程

第23章-使用存储过程 本章介绍什么是存储过程,为什么要使用存储过程以及如何使用存储过程,并且介绍创建和使用存储过程的基本语法. 23.1 存储过程 需要MySQL 5 MySQL 5添加了对存储过程的支持,因此,本章内容适用于MySQL 5及以后的版本.迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形. 为了处理订单,需要核对以保证库存中有相应的物品. 如果库存有物品,这些物品需要预定以便不

第十七节课:第18,19,23章,mariadb数据库、PXE无人值守安装系统和openldap目录服务。

第23章 (借鉴请改动) openldap数据的特点:1.短小.2.读取次数较多 上述说明: openLDAP服务端配置:     1.yum install -y openldap openldap-clients openldap-servers migrationtools  Loaded plugins: langpacks, product-id, subscription-manager //安装相关软件     2.生成秘钥文件并在/etc/hosts写入解析地址 slappass

4.26日第14次作业,23章项目整体绩效评估,24-32章信息安全相关知识

一.23章:项目整体绩效评估 1.三E审计是什么的合称?(记)P524 答:三E审计是经济审计.效率审计和效果审计的合称,因为三者的第一个英文字母均为E,顾称为三E审计. 2.霍尔三维结构是从哪三个方面考察系统工程的工作过程的?P527-528 答:霍尔三维结构是霍尔(A Hall)提出的关于系统方法论的结构,它从逻辑.时间.知识三方面考察系统工程的工作过程. 3.投资回收期的公式?(记,并理解)P533答:投资回收期的公式:(累计净现金流量出现正值的年份-1) + (上年累计净现金流量值的绝对

第23章 CSS边框图片效果

本章学习日后开发使用参考一下内容 https://www.qianduan.net/css3border-image-bian-kuang-tu-xiang-xiang-jie/ 或W3C 或者百度 未排版的PDF转WORD(不想排版了) 第 23章 CSS3边框图片效果学习要点:1.属性初探2.属性解释3.简写和版本 本章主要探讨 HTML5中 CSS3中边框图片背景的效果,通过这个新属性让边框更加的丰富多彩.一.属性解释CSS3提供了一个新的属性集合,用这几个属性可以嵌入图片形式的边框.这样

第23章、OnFocuChangeListener焦点事件(从零开始学Android)

在Android App应用中,OnFocuChangeListener焦点事件是必不可少的,我们在上一章的基础上来学习一下如何实现. 基本知识点:OnFocuChangeListener事件 一.界面 打开“res/layout/activity_main.xml”文件. 1.分别从工具栏向activity拖出2个编辑框EditText.控件来自Form Widgets. 2.打开activity_main.xml文件. [html] view plaincopy <LinearLayout

第23章 访问者模式(Visitor Pattern)

原文 第23章 访问者模式(Visitor Pattern) 访问者模式 导读:访问者模式是我个人认为所有行为模式中最为复杂的一种模式了,这个模式可能看一遍会看不懂,我也翻了好几个例子,依然不能很好的理解访问者模式的核心.下面这个例子是来源于大话设计模式中的例子,稍作了修改!后续如果我有更好的例子或者想法我会对本章进行完善. 概述:   一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作(神一般的语言). 结构图:       举例: 1 2 3

android开发步步为营之35:GridView的用法

之前使用asp.net开发软件的过程中也使用GridView,发现android里面也有这么一个控件,使用方法有点相似,都是使用适配器将数据绑定到这个控件,然后将数据展示出来,应该说它和ListView一样,是个非常常用的控件,所以我们应该学习如何使用它,理论知识是没多少的,就是一个展示数据的控件,继承关系如下: public class GridView extends AbsListView java.lang.Object android.view.View android.view.Vi