30、自定义gridview
要想实现自定义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相关推荐
- 自定义GridView分页模板
GridView较之DataGrid提供了更加强大.更加完善的功能,而且具备了丰富的可扩展功能,可以使用GridView提供的pagertemplate自定义分页模板: 事实上,GridView默认的 ...
- 自定义GridView 介绍
GridView 是Microsoft DataGrid(VS2003版本)的一个替代品,它继承了DataGrid的很多优点,同时也继承了它的很多缺点,我们在方便使用的同时,还是不免会产生一丝遗憾.早 ...
- android gridvie item,Android开发―解决自定义GridView高度第一个item高度异常问题
问题描述: 在写之前,先把问题的图贴出来,问题如下图,GridView的第一个item的自定义高度显示不正常(再次加载之后又正常),不是预设的高度: 解决方法: 首先需要申明,这个GridView 的 ...
- Android开发:自定义GridView/ListView数据源
http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮 ...
- Android自定义GridView显示一行,并且可以左右滑动
最近做一个类似滑动菜单栏的title,绑定数据源用的是GrildView,想要实现横着滑动并且GrildView只显示一行.最终采用代码形式在Activity中动态的添加布局实现. ViewGroup ...
- GridView自定义分页样式(上一页,下一页,到第几页)(新手教程)
今天要为网站做一个文章列表,发现GridView的分页样式很难看,于是结合网上的例子,自己做了一个.不是很美观,不过还是很实用的,先看下效果吧,如图(1).演示地址http://www.veryam. ...
- GridView学习记录(一)
今天学习了GridView中的一些功能,主要包括数据的绑定,删除,更新.使用GridView 中的 RowDeleting, RowEditing,RowCancelingEditing,RowUpd ...
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
在ASP.NET 2.0中操作数据:在GridView控件中使用TemplateField 英文原版 | 本教程的代码(C#) | 翻译目录 | 原文目录 导言 GridView ...
- Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
导言 GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中.最简单的字段类型是BoundField,它仅将数据简单的显示为文本. ...
最新文章
- NLP到底有多难?我们笑了,NLP 却忍不住哭了!
- devDependencies与dependencies (转载)
- es分词器错误分析_了解ElasticSearch分析器
- nlopt 二次优化
- a标签阻止链接跳转(href=‘javascript:;‘)
- windows 编程随笔——输出文本WM_PAINT消息|有效矩形和无效矩形
- jar导出与制作成exe在没jdk电脑下运行(图文教程+工具)
- 米的换算单位和公式_小学三年级数学常用公式和单位换算,孩子复习宝典!
- android service 访问数据库,XE5 ANDROID通过webservice访问操作MSSQL数据库
- iphone通知和android,手机App 通知数量太多,让你备感压力吗?教你如何消除令人心烦的信息通知(iPhone、Android)...
- 华为机试HJ29: 字符串加解密
- 建立桌面文件管理格子_win10桌面分区,win10如何创建桌面格子
- c语言注释部分两侧的分界符号分别是,C语言程序设计基础教程 - 习题答案
- 3dmax渲染计算机内存不足怎么办,解决3dmax渲染内存不够导致渲染失败的三种方法...
- 概率论笔记(一)重要公式
- edge浏览器被恶意插件劫持,不能删除由组织安装的扩展,提示您的浏览器由您的组织管理
- 听刘万祥老师讲“竖向折线图”、“点图”画法
- MPI和OpenMP实现矩阵相乘
- Linux 安装netcdf
- 学习计算机编程的基础