GridView 的简单应用
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 的简单应用的更多相关文章
- Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)
最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...
- GridView的简单使用
测试代码: activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a ...
- Android零基础入门第45节:GridView简单使用
原文:Android零基础入门第45节:GridView简单使用 前面一共用了8期来学习ListView列表的相关操作,其实学习的ListView的知识完全适用于AdapterView的其他子类,如G ...
- 初始ASP.NET数据控件GridView
使用GridView控件绑定数据源 GridView控件个人认为就是数据表格控件,它以表格的形式显示数据源中的数据.每列表示一个字段,每行表示一条记录. GridView控件支持在页面有一下功 ...
- GridView内容详解(转载)
GridView内容详解(转载) GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现.(车延禄)GridView的主要新特性 ...
- 【C#公共帮助类】 WebHelper帮助类
如果你是一个新手,如果你刚接触MVC,如果你跟着置顶的那个项目,我们肯定会用到这里面的几个帮助类 它们都在Common类库下,大家一定要记住要点:取其精华去其糟粕,切勿拿来主义~ Applicatio ...
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
- qml基础学习 模型视图(一)
一.理解qml模型和视图 qt的发展是迅速的,虽然在每一个release版本中或多或少都有bug,但是作为一个庞大的gui库,no,应该说是一个开发框架开说,qt已经算是做的相当好.qml部分是qt4 ...
- 精《记叙“tom”4年的软件开发之旅》
1.引言 本篇文章是记叙tom四年的软件开发从业经历,虽然他资历不长,况且本身也是个菜鸟,但他也曾有过荣誉.迷茫.困惑与选择,在这里他希望通过自己所经历过的事情分享给大家,给那些真正热爱软件开发的同学 ...
随机推荐
- Jenkins通过Publish over SSH插件实现远程部署
Jenkins通过Publish over SSH插件实现远程部署 步凑一.配置ssh免秘钥登录 部署详情地址:http://www.cnblogs.com/Dev0ps/p/8259099.html ...
- File文件的读写操作RandomAccessFile类
1.Java提供了一个对文件随机访问的操作,访问包括读和写操作,该类名是RandomAccessFile,该类的读写是基于指针的操作. 2.RandomAccessFile在堆文件进行随机访问操作时有 ...
- 计算器源码(数学式python)
''' ******************** 请计算表达式: 1 - 2 * ( (60-30 +(-40.0/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/1 ...
- Ubuntu 命令手册
提示:命令太多,查找的时候请用Shift+F. 目录 • 1. 前言 • 2 安装升级 • 2.1 查看软件 xxx 安装内容 • 2.2 查找软件库中的软件 • 2.3 显示系统安装包的统计信息 • ...
- Java公开课-02.抽象类和接口
在讲述抽象类和接口之前,扯点别的:封装,继承,多态,我只做个简单的涉略 一,封装 1.体现: 将变量和方法放到一个类中 私有字段封装成共有属性 2.this: 如果发现成员变量的名称和方法参数的名称相 ...
- vi/vim操作
vi/vim是unix/linux操作系统下的文本编辑器. 由于unix/linux万物届文件的特性,vi/vim可以编辑任何格式的文件. 下面是常见的知识点,仅供参考: 编辑方式:vi/vim + ...
- Thymeleaf利用layout.html文件生成页面布局框架
1.layout.html文件 生成布局 <!DOCTYPE html> <html lang="zh-CN" xmlns:th="http://www ...
- centos6.9 升级内核版本
想在centos6.9上安装docket,不过因为内核版本是2.6的故而想升级到最新的内核版本 晚上有编译升级的比较麻烦,不过有助于理解内核升级,我使用的直接升级到最新版方法 1. 导入public ...
- 多进程Multiprocessing模块
多进程 Multiprocessing 模块 先看看下面的几个方法: star() 方法启动进程, join() 方法实现进程间的同步,等待所有进程退出. close() 用来阻止多余的进程涌入进程池 ...
- Extjs 上传文件 IE不兼容的问题[提示下载保存]
我最不喜欢的浏览器的是IE,但无奈很多项目的客户使用的是IE. 在使用Extjs做文件上传时,其他浏览器没有问题,但IE却一个劲提示保存文件,看服务端运行,它其实是运行成功了已经,但客户端的进度条却一 ...