GridView和SimpleAdapter实现网格布局

android:horizontalSpacing 元素之间的水平间距
android:verticalSpacing     元素之间的垂直间距
android:numColumns         设置列数
android:stretchMode          拉伸模式

该程序的目的是将图片用适配器放入4列的gridView中,点击一个图片下方出现预览图。

package com.kale.gridview02;

import java.util.ArrayList;
import java.util.HashMap;
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.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

    GridView gV;
    ImageView iV;
    //将图片Id放入数组中去
    int []imageIds = new int[] {
            R.drawable.itunes,R.drawable.appstore,
            R.drawable.calculator,R.drawable.camera,R.drawable.mail,
            R.drawable.setting,R.drawable.safair
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewInit();
        //定义一个list来存放多个item元素
        ArrayList<Map<String, Object>> listItems = new ArrayList<Map<String,Object>>();
        for (int i = 0; i < imageIds.length; i++) {
            Map<String, Object> item = new HashMap<>();
            item.put("image", imageIds[i]);
            listItems.add(item);
        }
        //创建simpleAdapter来设置元素。1.context对象 2.list对象(数据源)3.item的布局文件 4.元素中的键名 5.该键名对应的组件的id
        SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.item,
                new String[] {"image"}, new int[] {R.id.item_imageView_id});
        gV.setAdapter(adapter);
        gV.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                //点击哪个图片,下面的imageview就显示哪个
                iV.setImageResource(imageIds[position]);

            }
        });
    }

    private void viewInit() {
        gV = (GridView)findViewById(R.id.gridView_id);
        iV = (ImageView)findViewById(R.id.imageView_id);
    }
}
<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"
    tools:context="${relativePackage}.${activityClass}" >

    <!--
        android:horizontalSpacing 元素之间的水平间距
        android:verticalSpacing   元素之间的垂直间距
        android:numColumns        设置列数
        android:stretchMode       拉伸模式
     -->
    <GridView
        android:id="@+id/gridView_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:horizontalSpacing="1dp"
        android:verticalSpacing="1dp"
        android:numColumns="4"
        android:gravity="center">
    </GridView>

    <ImageView
        android:id="@+id/imageView_id"
        android:layout_width="180dp"
        android:layout_height="180dp"
        android:layout_below="@+id/gridView_id"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/imageView_id"
        android:layout_marginLeft="23dp"
        android:textSize="20sp"
        android:text="预览图片" />

</RelativeLayout>

item.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="vertical" >

    <ImageView
        android:id="@+id/item_imageView_id"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

GridView和SimpleAdapter实现网格布局

时间: 2024-07-31 02:58:12

GridView和SimpleAdapter实现网格布局的相关文章

flutter网格布局之GridView组件

前面总结了使用ListView来实现列表,但是,有的时候,数据量很大,需要使用矩阵方式排列才能更清晰的展示数据,在flutter中,可以使用网格列表组件GridView来实现这个布局. GridView接收如下可选参数属性: scrollDirection:滚动方法 padding:内边距 resolve :组件反向排序 crossAxisSpacing :水平子 Widget 之间间距 mainAxisSpacing :垂直子 Widget 之间间距 crossAxisCount:一行的 Wi

7-4 基于GridView实现网格布局

网格布局 GridView.count允许我们控制,这一行显示几列.目前我们这里一行显示了两列. GridView.count来创建GridView 代码运行起来的效果 比如修改为一行显示3列 结束 原文地址:https://www.cnblogs.com/wangjunwei/p/12199317.html

android GridView网格布局,高度问题

项目中,遇到这样问题, 网格布局宽度自适应,但是高度设不了,文字和图片下面有一大片空白,将高度写死为306dp也不可以, 多方查找,得到答案,需要在适配器中 设置layoutparams设置高度, 代码如下 public class ServiceGridBaseAdapter extends BaseAdapter{ private Context mContext; private List<StaffEntity> mList; private StaffEntity entity; p

Android组件式开发(2)——实现网格布局的RadioButton矩阵

** 前言 ** 在Android中,我们一般通过RadioGroup来管理一组RadioButton 来达到 单选按钮的互斥效果.但是,有些需求中,需要完成N行N列这样的RadioButton组成的矩阵,但是我们的RadioGroup是一个耿直的LinearLayout,无法完成网格布局╮(╯▽╰)╭.所以,下面我就像大家来介绍一种实现网格布局的RadioButton的思路. 无图无真相, 先上一下效果图~ ** 思路 ** 提到网格布局,最简单的就是使用系统的GridView来实现,我们需要

Android UI之GridLayout(网格布局)

说明:网格布局是4.0之后添加的布局,跟TableLayout有点像,但更加好用,它把容器分为一个rows*columns的网格,每个网格都是一个组件位,可是通过设置让组件位占据多行/列. 与之相似地,还有一个叫做GridView的组件,无论功能和名称都很相似,不过GridView使用Adapter来填充组件位,GridLayout则要简化得多. 按照CSDN博主studyboyjlu4(博客地址:http://blog.csdn.net/studyboyjlu4)的看法,GridView和Gr

CSS3 网格布局(grid-layout)基础知识 - 网格模板属性(grid-template)使用说明

CSS3引入了新的网格布局(grid layout),以适应显示和设计技术的发展(尤其是移动设备优先的响应式设计). 主要目标是建立一个稳定可预料且语义正确的网页布局模式,用来替代过往表现不稳定且繁琐的table.flow以及JS脚本混合技术来实现的网页动态布局. 本文将简单而准确的介绍网格布局属性的基本概念和使用方法(摘自踏得网在线HTML5教程). 1. 概述 网格模板区域(grid-template-areas).网格模板行(grid-template-rows)和网格模板列(grid-t

在SOUI中使用网格布局

在实现网格布局前,SOUI支持两种布局形式:相对布局,和线性布局,其中线性布局是2017年2月份才支持的布局. 这两年工作都在Android这里,Android里有号称5大布局(RelativeLayout, LinearLayout, FrameLayout, GridLayout,TableLayout). FrameLayout很简单,在SOUI里一般用TabCtrl就实现了.RelativeLayout和SOUI自己的相对布局功能类似,线性布局也有了,但是一直没有实现GridLayout

GridView和SimpleAdapter九宫格作业

安卓作业: 使用GridView和SimpleAdapter实现手机界面常见的九宫格,图片可以任意选择,注意图片大小 1,主xml文件 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在the April 2012 issue (226)这期的.net杂志上-这杂志是面向网页设计者以及开发者,全球销量最高的杂志. 按照以往来说,用CSS来布局看起来总是一样非常繁杂的工作.然而,随着一个个新标准的推出,网页设计者已经能够实现非常轻松地进行布局工作了. 主流的浏览