GridView(网格视图)
GridView 是按照行列的方式来显示内容的,一般用于显示图片列表,比如九宫格列表,使用
GridView实现起来很简单。GridView 的用法与ListView 类似,首先看图2-36,效果图中显示的两
张图片是网上找的。
1.修改布局文件activity_main.xml。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><GridViewandroid:id="@+id/gridview"android:numColumns="4"android:scrollbars="none"android:layout_marginBottom="10dp"android:verticalSpacing="10dp"android:horizontalSpacing="10dp"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</RelativeLayout>
GridView控件中的几个属性作用如下:
android:numColumns=“4”:一行显示4列。
android:scrollbars=“none”:去掉滚动条。
android:verticalSpacing=“10dp”:两行之间的间距。
android:horizontalSpacing=“10dp”:两列之间的间距
2.Activity 的代码比较简单,初始化数据、设置适配器、设置点击事件
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private GridView gridview;private List<Integer> images;private GridAdapter gridAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();gridview= (GridView) findViewById(R.id.gridview);gridview.setAdapter(gridAdapter=new GridAdapter(this,images));//item设置点击事件gridview.setOnItemClickListener(onItemClickListener);}private AdapterView.OnItemClickListener onItemClickListener=new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(MainActivity.this,"当前选中了" +":"+position,Toast.LENGTH_SHORT).show();}};//初始化数据源private void initData(){images=new ArrayList<>();for(int i=0;i<100;i++){if(i%2==1){//对2取余数结果为1 0对2取余等于0,所以0不算,结果为:1 3 5 7 9结果为奇数images.add(R.mipmap.test_one);}else{ //0 2 4 6 8 10 为偶数 当i为0时,集合里面添加这个所以test_two在第一个(集合索引0)images.add(R.mipmap.test_two);}}}
}
3.GridView适配器与ListView 适配器类似,GridAdapter.java 代码如下:(因为类似所以代码不
做详细解释)
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;import java.util.List;/*** @author ansen* @create time 2016-12-13*/
public class GridAdapter extends BaseAdapter{//注意:这里继承BaseAdapterprivate LayoutInflater inflater;private List<Integer> images;public GridAdapter(Context context,List<Integer> images){inflater=LayoutInflater.from(context);this.images=images;}@Overridepublic int getCount() {return images.size();//集合的长度(个数)(图片的个数)}@Overridepublic Object getItem(int position) {//每一行绑定的数据源return images.get(position);//集合根据索引获取每张图片}@Overridepublic long getItemId(int position) {return position;//获取图标的索引}//获取每一行的View@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if(convertView==null){viewHolder=new ViewHolder();convertView = inflater.inflate(R.layout.activity_grid_item, parent, false);viewHolder.imageview = (ImageView) convertView.findViewById(R.id.imageview);convertView.setTag(viewHolder);}else{viewHolder= (ViewHolder) convertView.getTag();}viewHolder.imageview.setImageResource(images.get(position));//注意:这个position是局部变量里面的return convertView;}private class ViewHolder{//内部类(把布局item的控件存储到这个类对象里面,方便存储)private ImageView imageview;}
}
3.2 item的布局文件
<?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"><!--android:scaleType="centerCrop" 为了让所有图片充满真个ImageView,是用centerCrop,这里高度设置为70dp--><ImageViewandroid:id="@+id/imageview"android:layout_gravity="center_horizontal"android:layout_width="match_parent"android:layout_height="70dp"android:scaleType="centerCrop"android:src="@mipmap/test_one" />
</LinearLayout>
效果如下所示:
GridView(网格视图)相关推荐
- ASP.NET中 DropDownList+GridView(网格视图)的使用前台绑定[高]
ylbtech-ASP.NET-Control-Bind:DropDownList+GridView(网格视图)的使用前台绑定[高] ASP.NET中 DropDownList+GridView(网格 ...
- UI组件之AdapterView及其子类(二)GridView网格视图的使用
GridView网格视图属性: android:numColumns="auto_fit" --------列数设置为自动,可以为确定的数值 android:columnWidth ...
- GridView网格视图的使用
GridView与ListView基本相似. 第一步就是创建适配器,实现四个方法. package com.example.myapplication.adapter;import android.c ...
- Android -- 下拉列表、列表视图、网格视图
下拉框 -- 文本 Spinner 用于从一串列表中选择某项,功能类似于单选按钮的组合 下拉列表的展示 方式有两种,一种是在当前下拉框的正下方弹出列表框,此时要把spinnerMode属性设置为 dr ...
- 高级控件——列表类视图——网格视图GridView
======================================================================================= 布局: <Line ...
- Android 网格视图GridView
GridView的视图排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要显示时,可以使用GirdView.既然有多个元素要显示,就需要使用BaseAdapter来存储这些元素.用户可能 ...
- 安卓学习笔记23:常用控件 - 网格视图与图像切换器
文章目录 零.学习目标 一.网格视图 (一)概述 (二)继承关系图 (三)常用属性 二.图像切换器 (一)概述 (二)继承关系图 三.案例演示 - 选择水果 (一)运行效果 (二)涉及知识点 (三)实 ...
- 学习笔记(五)——数据适配器、数据表、数据网格视图控件的综合应用。
学习笔记(五)--数据适配器.数据表.数据网格视图控件的综合应用. 1. 批量修改 修改包括增加,删除以及更新3个操作,所以声明实力化3个SQL命令分别应用于插入,删除以及修改 将声明的SQL命令连 ...
- Android应用开发—通用的GridView网格分割线
注:本文基于 Android RecyclerView 使用完全解析 体验艺术般的控件 中关于GridView网格分割线部分代码扩展而来. 原接口代码: import android.content. ...
最新文章
- 【网站部署】解析二级域名并部署网站
- 俄罗斯方块:win32api开发
- rabbitmq_management简介
- 容器编排技术 -- Kubernetes kubectl create service loadbalancer 命令详解
- iOS 数据持久化 NSUserDefault
- Wine DLL库安装工具winetricks
- Unity3d 枚举某个目录下所有资源
- 支付宝疯起来连自己都打
- EPLAN史上最全部件库,官网下载,部件宏,EDZ格式,239G,导入后一劳永逸
- qq影音4.0 android,QQ影音4.0官方最新正式版
- [linux]scp与服务器互传文件
- fremaker遍历list_Freemarker中如何遍历List
- 【CIPS 2016】(17章)文字识别 (研究进展、现状趋势)
- Eclipse官方汉化方法
- gpgpu学习推荐书籍
- 这里需要一个高端大气上档次的开头
- 乘风破浪,一往无前 – Smartbi和你一起走过的2020年
- 【iOS与EV3混合机器人编程系列之五】iOS_WiFi_EV3_Library 剖析之连接EV3
- 数字移动通信系统中广泛使用的两大类调制技术
- 用Scrapy爬取王者皮肤海报~