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四年的软件开发从业经历,虽然他资历不长,况且本身也是个菜鸟,但他也曾有过荣誉.迷茫.困惑与选择,在这里他希望通过自己所经历过的事情分享给大家,给那些真正热爱软件开发的同学 ...
随机推荐
- Python_将指定文件夹中的文件压缩至已有压缩包
from zipfile import ZipFile from os import listdir from os.path import isfile,isdir,join def addFile ...
- 由于github仓库中提前建立readme文件,导致git push报错error: failed to push some refs to 'git@github.com:
$ git push -u origin master To git@github.com:xxx/xxx.git ! [rejected] master -> master (fetch fi ...
- springboot+activemq中引入重发机制
一.简介 在使用activemq消息中间件进行消息队列传输时,总会由于各种原因导致消息失败. 一个经典的场景是一个生成者向Queue中发消息,里面包含了一组邮件地址和邮件内容.而消费者从Queue中将 ...
- D. Kuro and GCD and XOR and SUM
Kuro is currently playing an educational game about numbers. The game focuses on the greatest common ...
- nginx php 配置跨域
我使用的是lnmp一键安装包 在虚拟记住添加 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allo ...
- genymotion中app打开后屏幕是倒的问题
屏幕是倒的是因为你使用了虚拟机的默认分辨率. 解决办法: 选择需要的设置的虚拟机,点击后面的设置按钮 弹窗中选择其他的分辨率 如果之前是1024x600,前面的数值大于后面的.则换成前面的数值小于后面 ...
- spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件
这篇文章用来总结一下spring,springmvc,spring+mybatis,spring+hibernate的配置文件 1.web.xml 要使用spring,必须在web.xml中定义分发器 ...
- 2013-09-16 构建C1000K的服务器(1) – 基础
http://www.ideawu.net/blog/archives/740.html 著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经 ...
- Android UI性能优化实战 识别绘制中的性能问题
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45556391: 本文出自:[张鸿洋的博客] 1.概述 2015年初google ...
- node.js面向对象实现(二)继承
http://blog.sina.com.cn/s/blog_b5a53f2e0101nrdi.html 继承是面向对象中非常重要的一个概念,那么在Node.js中如何实现继承呢? node.js在u ...