gridView 是android一个控件主要是显示列似与九宫格这样的效果。废话不多说直接上代码。

首先是需要一个适配器来确定每一个里面的布局,在里面我自定义了一个点击事件,当点击图片布局的时候触发,实现在activity中去实现他,当然也可以使用OnItemClickLisntner来直接使用每一个item的点击。

GridViewAdapter.java
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView; import java.util.List; /**
* Created by zd on 2018/12/29.
*/
public class GridViewAdapter extends BaseAdapter { private List<String> data;//数据 private Context context;//上下文 private OnImgClickListener itemClickListener; public GridViewAdapter(List<String> data, Context context) {
this.data = data;
this.context = context;
} @Override
public int getCount() {
return data.size();
} @Override
public Object getItem(int position) {
return data.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(final int position,final View convertView, ViewGroup parent) {
View view;
ViewHolder viewHolder;
if (convertView == null) {
//加载子布局
view = LayoutInflater.from(context).inflate(R.layout.item_grid, parent, false);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) view.findViewById(R.id.img);
viewHolder.textView = (TextView) view.findViewById(R.id.txt);
viewHolder.ll = (LinearLayout) view.findViewById(R.id.ll);
view.setTag(viewHolder);
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
String plan = data.get(position); if (plan != null) {
viewHolder.imageView.setImageResource(R.mipmap.ic_launcher);
viewHolder.textView.setText(plan); viewHolder.ll.setTag(position);
viewHolder.ll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout btn = (LinearLayout) v;
int pos = (Integer) btn.getTag();
Log.e("sys"," position2 :" + pos);
Log.e("sys"," data2 :" + data.get(pos).toString());
if(itemClickListener!=null){
itemClickListener.onImgClick((Integer) v.getTag());
}
}
});
}
return view;
} private class ViewHolder {
ImageView imageView;
TextView textView;
LinearLayout ll;
} //自定义点击接口
public interface OnImgClickListener {
void onImgClick(int tag);
} //接口设置
public void setImgClickListener(OnImgClickListener itemClickListener){
this.itemClickListener = itemClickListener;
}
}

  

item_grid.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_height="wrap_content"
android:orientation="vertical"> <LinearLayout
android:id="@+id/ll"
android:gravity="center"
android:orientation="vertical"
android:layout_width="80dp"
android:layout_height="wrap_content"> <ImageView
android:id="@+id/img"
android:layout_width="80dp"
android:layout_height="100dp"/> <TextView
android:maxLines="1"
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/> </LinearLayout>
</LinearLayout>

 

MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.GridView; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity { GridViewAdapter gridViewAdapter;
List<String> data; GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); data = new ArrayList<>();
data.add("A1");
data.add("A2");
data.add("A3");
data.add("A4");
data.add("A5");
data.add("B1");
data.add("B2");
data.add("B3");
data.add("B4");
data.add("B5");
for (int i=0;i<30;i++){
data.add("C"+i);
}
gridView = (GridView) findViewById(R.id.girdView); //实例化适配器
gridViewAdapter = new GridViewAdapter(data, this);
gridViewAdapter.setImgClickListener(new GridViewAdapter.OnImgClickListener() {
@Override
public void onImgClick(int tag) {
//
Log.e("sys","tag"+tag);
Log.e("sys"," data2 :" + data.get(tag).toString());
}
});
//设置适配器
gridView.setAdapter(gridViewAdapter); }
}

  activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.kkrs.grid.MainActivity"> <GridView
android:columnWidth="100dp"
android:numColumns="4"
android:id="@+id/girdView"
android:layout_width="match_parent"
android:layout_height="match_parent"></GridView> </LinearLayout>

  android:numColumns="4" 表示一行有多少个

GridView 的简单应用的更多相关文章

  1. Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)

    最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...

  2. GridView的简单使用

    测试代码: activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a ...

  3. Android零基础入门第45节:GridView简单使用

    原文:Android零基础入门第45节:GridView简单使用 前面一共用了8期来学习ListView列表的相关操作,其实学习的ListView的知识完全适用于AdapterView的其他子类,如G ...

  4. 初始ASP.NET数据控件GridView

    使用GridView控件绑定数据源 GridView控件个人认为就是数据表格控件,它以表格的形式显示数据源中的数据.每列表示一个字段,每行表示一条记录.     GridView控件支持在页面有一下功 ...

  5. GridView内容详解(转载)

    GridView内容详解(转载) GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现.(车延禄)GridView的主要新特性 ...

  6. 【C#公共帮助类】 WebHelper帮助类

    如果你是一个新手,如果你刚接触MVC,如果你跟着置顶的那个项目,我们肯定会用到这里面的几个帮助类 它们都在Common类库下,大家一定要记住要点:取其精华去其糟粕,切勿拿来主义~ Applicatio ...

  7. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  8. qml基础学习 模型视图(一)

    一.理解qml模型和视图 qt的发展是迅速的,虽然在每一个release版本中或多或少都有bug,但是作为一个庞大的gui库,no,应该说是一个开发框架开说,qt已经算是做的相当好.qml部分是qt4 ...

  9. 精《记叙“tom”4年的软件开发之旅》

    1.引言 本篇文章是记叙tom四年的软件开发从业经历,虽然他资历不长,况且本身也是个菜鸟,但他也曾有过荣誉.迷茫.困惑与选择,在这里他希望通过自己所经历过的事情分享给大家,给那些真正热爱软件开发的同学 ...

随机推荐

  1. 使用C++实现图形的旋转、缩放、平移

    编译环境:VS2017 编译框架:MFC 实验内容:显示一个三角形,并将其绕中心进行旋转.缩放以及平移等操作 实验步骤: 1.打开VS2017,并创建MFC项目,具体方法参见:http://www.c ...

  2. Mybatis配置文件SqlMapConfig.xml中的标签

    SqlMapConfig.xml配置文件中的属性 1 配置内容 properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器 ...

  3. Render

    render 渲染元素 元素是React应用程序的最小构建块 "根"DOM节点,它内部的所有内容都将由React DOM进行管理 仅使用React构建的App程序通常具有单个Dom ...

  4. synchronized(this) 与synchronized(class) 之间的区别

    一.概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机 ...

  5. jmeter使用csv进行参数化(二)

    上篇说的是csv的第一种方法进行参数化,这篇说第二种方法. 重新打开录制好的脚本. 1.提取函数变量 打开选项--函数助手对话框 设置对话框参数: 选择csvread,然后将变量文件的路径填写进来.添 ...

  6. width和max-width的用处

    width默认是auto啊,你设置max-width相当于没设置width,它按默认值auto自然就是图片宽度咯.max-width很多的场景都是和width配合用的:比如设置一个标签,width是( ...

  7. 数据结构的javascript实现

    栈 栈(stack)又名堆栈,是一种遵循后进先出(LIFO)原则的有序集合.新添加或待删除的元素都保存在栈的末尾,称作栈顶,另一端称作栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底. functio ...

  8. 2013-09-16 构建C1000K的服务器(1) – 基础

    http://www.ideawu.net/blog/archives/740.html 著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经 ...

  9. ELK 架构之 Logstash 和 Filebeat 配置使用(采集过滤)

    相关文章: ELK 架构之 Elasticsearch 和 Kibana 安装配置 ELK 架构之 Logstash 和 Filebeat 安装配置 ELK 使用步骤:Spring Boot 日志输出 ...

  10. python之six用法

    six.PY2 返回一个表示当前运行环境是否为python2的boolean值 six.PY3 返回一个表示当前运行环境是否为python3的boolean值 import six,sys print ...