要想实现自定义gridview效果,有下边几个步骤:

1、定义grivew中的item的xml文件

假如item需要显示一个图片,图片下边显示文字:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="100dp"
 4     android:layout_height="100dp"
 5     android:orientation="vertical"
 6      >
 7
 8     <Button
 9         android:id="@+id/button_gridview_item"
10         android:layout_width="130dp"
11         android:layout_height="130dp"
12         android:text=""
13
14         android:focusable="false"
15         android:clickable="false"
16
17         android:textColor="#ffffff"
18         android:textSize="36sp"
19         />
20
21      <TextView
22         android:id="@+id/tv_login_staff_name"
23         android:layout_width="130dp"
24         android:layout_height="30dp"
25         android:text="button"
26
27         android:focusable="false"
28         android:clickable="false"
29         android:textSize="15sp"
30         android:gravity="center"
31         android:textColor="#ffffff"
32         />
33
34 </LinearLayout>

View Code

2、自定义adapter

我是extends了baseAdapter,然后在getView时,将图片从网络加载到button上。

注意点:这些getItem、getItemId、getCount等继承过来的方法,一定要记得再次赋值

 1 public class login_gridview_adapter extends BaseAdapter{
 2
 3     public static int selectPic = -1;
 4     private Context context = null;
 5     private  List<login_staff> list = null;
 6     private String tag = "adapter";
 7
 8     public login_gridview_adapter(Context ctxt,List<login_staff> ls)
 9     {
10         for(int i=0;i<ls.size();i++)
11         {
12             CommonUtils.LogWuwei(tag,"in adaper "+ls.get(i).name );
13         }
14
15         context = ctxt;
16         list = ls;
17     }
18
19
20
21     @Override
22     public int getCount() {
23         // TODO Auto-generated method stub
24         return list.size();
25     }
26
27     public void setNotifyDataChange(int id) {
28         selectPic = id;
29         super.notifyDataSetChanged();
30     }
31
32     @Override
33     public Object getItem(int position) {
34         // TODO Auto-generated method stub
35         return list.get(position);
36     }
37
38     @Override
39     public long getItemId(int position) {
40         // TODO Auto-generated method stub
41         return position;
42     }
43
44     @Override
45     public View getView(int position, View convertView, ViewGroup parent) {
46         // TODO Auto-generated method stub
47
48
49         CommonUtils.LogWuwei(tag, "position is "+position);
50
51         LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
52         View grid = inflater.inflate(R.layout.grid_item, null);
53
54
55         if (convertView == null) {
56             grid = new View(context);
57             grid = inflater.inflate(R.layout.grid_item, null);
58             Button button = (Button) grid.findViewById(R.id.button_gridview_item);
59             String imgUrl = list.get(position).head;
60                 login.bitmapUtils.display(button, imgUrl, login.bigPicDisplayConfig, null);
61
62                 TextView tv = (TextView) grid.findViewById(R.id.tv_login_staff_name);
63                 tv.setText(list.get(position).name);
64
65           } else {
66             grid = (View) convertView;
67           }
68
69         if(selectPic == position)
70         {
71             String imgUrl = list.get(position).head;
72             //convertView.setAnimation(new AnimationUtils().loadAnimation(login.ctxt,R.anim.unzoom_in));
73             Message msg = new Message();
74             msg.what = login.REMOVE_GRIDVIEWS;
75             login.handler.sendMessage(msg);
76             login.bitmapUtils.display(login.gridviewStaffList, imgUrl, login.bigPicDisplayConfig, null);
77         }
78         return grid;
79     }
80
81
82
83 }

View Code

3、activity中设置gridview的适配器为我们上一步自定义的adapter

 1 gridviewStaffListAdapter = new login_gridview_adapter(ctxt, listLoginStaff);
 2
 3 gridviewStaffList.setAdapter(gridviewStaffListAdapter);
 4         gridviewStaffList.setSelector(new ColorDrawable(Color.TRANSPARENT));
 5         gridviewStaffList.setOnItemClickListener(new OnItemClickListener() {
 6
 7             @Override
 8             public void onItemClick(AdapterView<?> parent, View view,
 9                     int position, long id) {
10                 // TODO Auto-generated method stub
11                 MsgUtils.SendSingleMsg(new HandlerUtils(ctxt).handler, listLoginStaff.get(position).name,HandlerUtils.SHOW_TOAST);
12                 gridviewStaffListAdapter.setNotifyDataChange(position);
13                 positionStaffId = listLoginStaff.get(position).staff_id;
14             }
15         });

View Code

4、总结

要想改变gridview中数据,必须更新适配器(也就是设置过的adapter);那么要想设置适配器,必须设置适配器定义时传入的list,list经过add、remove等操作后,要想让

gridview跟着改变,需要手动更新一下,比如说这样:

gridviewStaffListAdapter.notifyDataSetChanged();

转载于:https://www.cnblogs.com/kunyashaw/p/4352542.html

30、自定义gridview相关推荐

  1. 自定义GridView分页模板

    GridView较之DataGrid提供了更加强大.更加完善的功能,而且具备了丰富的可扩展功能,可以使用GridView提供的pagertemplate自定义分页模板: 事实上,GridView默认的 ...

  2. 自定义GridView 介绍

    GridView 是Microsoft DataGrid(VS2003版本)的一个替代品,它继承了DataGrid的很多优点,同时也继承了它的很多缺点,我们在方便使用的同时,还是不免会产生一丝遗憾.早 ...

  3. android gridvie item,Android开发―解决自定义GridView高度第一个item高度异常问题

    问题描述: 在写之前,先把问题的图贴出来,问题如下图,GridView的第一个item的自定义高度显示不正常(再次加载之后又正常),不是预设的高度: 解决方法: 首先需要申明,这个GridView 的 ...

  4. Android开发:自定义GridView/ListView数据源

    http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮 ...

  5. Android自定义GridView显示一行,并且可以左右滑动

    最近做一个类似滑动菜单栏的title,绑定数据源用的是GrildView,想要实现横着滑动并且GrildView只显示一行.最终采用代码形式在Activity中动态的添加布局实现. ViewGroup ...

  6. GridView自定义分页样式(上一页,下一页,到第几页)(新手教程)

    今天要为网站做一个文章列表,发现GridView的分页样式很难看,于是结合网上的例子,自己做了一个.不是很美观,不过还是很实用的,先看下效果吧,如图(1).演示地址http://www.veryam. ...

  7. GridView学习记录(一)

    今天学习了GridView中的一些功能,主要包括数据的绑定,删除,更新.使用GridView 中的 RowDeleting, RowEditing,RowCancelingEditing,RowUpd ...

  8. [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField

    在ASP.NET 2.0中操作数据:在GridView控件中使用TemplateField 英文原版  |   本教程的代码(C#)   |   翻译目录   |   原文目录 导言 GridView ...

  9. Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField

    导言 GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中.最简单的字段类型是BoundField,它仅将数据简单的显示为文本. ...

最新文章

  1. NLP到底有多难?我们笑了,NLP 却忍不住哭了!
  2. devDependencies与dependencies (转载)
  3. es分词器错误分析_了解ElasticSearch分析器
  4. nlopt 二次优化
  5. a标签阻止链接跳转(href=‘javascript:;‘)
  6. windows 编程随笔——输出文本WM_PAINT消息|有效矩形和无效矩形
  7. jar导出与制作成exe在没jdk电脑下运行(图文教程+工具)
  8. 米的换算单位和公式_小学三年级数学常用公式和单位换算,孩子复习宝典!
  9. android service 访问数据库,XE5 ANDROID通过webservice访问操作MSSQL数据库
  10. iphone通知和android,手机App 通知数量太多,让你备感压力吗?教你如何消除令人心烦的信息通知(iPhone、Android)...
  11. 华为机试HJ29: 字符串加解密
  12. 建立桌面文件管理格子_win10桌面分区,win10如何创建桌面格子
  13. c语言注释部分两侧的分界符号分别是,C语言程序设计基础教程 - 习题答案
  14. 3dmax渲染计算机内存不足怎么办,解决3dmax渲染内存不够导致渲染失败的三种方法...
  15. 概率论笔记(一)重要公式
  16. edge浏览器被恶意插件劫持,不能删除由组织安装的扩展,提示您的浏览器由您的组织管理
  17. 听刘万祥老师讲“竖向折线图”、“点图”画法
  18. MPI和OpenMP实现矩阵相乘
  19. Linux 安装netcdf
  20. 学习计算机编程的基础

热门文章

  1. mysql随机显示记录_MySQL随机读取表中记录
  2. Verilog功能模块——降采样
  3. Java继承_java继承
  4. 英语语法---形容词短语详解
  5. 机器学习实践:TensorFlow最后一个epoch训练损失函数显著增大
  6. 【CV】OpenCV 入门之旅
  7. 【竞赛相关】特征/模型存储的5种方法
  8. 【Python基础】Python 炫技操作:五种 Python 转义表示法
  9. 【NLP】文本生成?还不快上知识库
  10. 【小白学PyTorch】16.TF2读取图片的方法