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

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

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

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp"
android:orientation="vertical"
> <Button
android:id="@+id/button_gridview_item"
android:layout_width="130dp"
android:layout_height="130dp"
android:text="" android:focusable="false"
android:clickable="false" android:textColor="#ffffff"
android:textSize="36sp"
/> <TextView
android:id="@+id/tv_login_staff_name"
android:layout_width="130dp"
android:layout_height="30dp"
android:text="button" android:focusable="false"
android:clickable="false"
android:textSize="15sp"
android:gravity="center"
android:textColor="#ffffff"
/> </LinearLayout>

2、自定义adapter

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

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

 public class login_gridview_adapter extends BaseAdapter{

     public static int selectPic = -1;
private Context context = null;
private List<login_staff> list = null;
private String tag = "adapter"; public login_gridview_adapter(Context ctxt,List<login_staff> ls)
{
for(int i=0;i<ls.size();i++)
{
CommonUtils.LogWuwei(tag,"in adaper "+ls.get(i).name );
} context = ctxt;
list = ls;
} @Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
} public void setNotifyDataChange(int id) {
selectPic = id;
super.notifyDataSetChanged();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub CommonUtils.LogWuwei(tag, "position is "+position); LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View grid = inflater.inflate(R.layout.grid_item, null); if (convertView == null) {
grid = new View(context);
grid = inflater.inflate(R.layout.grid_item, null);
Button button = (Button) grid.findViewById(R.id.button_gridview_item);
String imgUrl = list.get(position).head;
login.bitmapUtils.display(button, imgUrl, login.bigPicDisplayConfig, null); TextView tv = (TextView) grid.findViewById(R.id.tv_login_staff_name);
tv.setText(list.get(position).name); } else {
grid = (View) convertView;
} if(selectPic == position)
{
String imgUrl = list.get(position).head;
//convertView.setAnimation(new AnimationUtils().loadAnimation(login.ctxt,R.anim.unzoom_in));
Message msg = new Message();
msg.what = login.REMOVE_GRIDVIEWS;
login.handler.sendMessage(msg);
login.bitmapUtils.display(login.gridviewStaffList, imgUrl, login.bigPicDisplayConfig, null);
}
return grid;
} }

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

 gridviewStaffListAdapter = new login_gridview_adapter(ctxt, listLoginStaff);

 gridviewStaffList.setAdapter(gridviewStaffListAdapter);
gridviewStaffList.setSelector(new ColorDrawable(Color.TRANSPARENT));
gridviewStaffList.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
MsgUtils.SendSingleMsg(new HandlerUtils(ctxt).handler, listLoginStaff.get(position).name,HandlerUtils.SHOW_TOAST);
gridviewStaffListAdapter.setNotifyDataChange(position);
positionStaffId = listLoginStaff.get(position).staff_id;
}
});

4、总结

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

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

gridviewStaffListAdapter.notifyDataSetChanged();

30、自定义gridview的更多相关文章

  1. android 自定义gridview(导航)

    最近又重新做回安卓,做了个小项目.下绝心使用android studio,通过这一回实战,终于用上了.综合了前人的经验,搞了个自己满意的导航界面,用的是gridview. 代码: package co ...

  2. 自定义GridView实现分割线解析

    前两天在些项目的时候碰到常用的GridView要实现一些分割线,之前就是用本方法利用listView和Item的背景颜色的不同线显示分割线.这是最low的一种做法.于是我就简单的写了一个自定义的 Gr ...

  3. yii2-basic后台管理功能开发之三:自定义GridView列显示

    在第二篇 yii2-basic后台管理功能开发之二:创建CRUD增删改查 中,我们利用gii工具生成的结果一般并不是我们想要的结果. 我们需要根据自己的需求自定义列显示.我遇到的主要是一下变更: 时间 ...

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

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

  5. 一个可以拖动的自定义Gridview代码

    这个可以拖动的gridview继承于gridview,所以,用法和gridview一样, 代码如下: public class DragGridView extends GridView { priv ...

  6. GridView布局,自定义适配器,水平滚动

    添加GridItem布局XML文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  7. GridView自定义分页样式(上一页,下一页,到第几页)

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

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

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

  9. ScrollView嵌套ListView,GridView数据加载不全问题的解决

    我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...

随机推荐

  1. [转载]SAP预装服务器全编译

    一.说明 SAP系统初始安装后,每当事物码第一次运行时,GUI的左下角会显示编译的状态(如图 1所示),费时很多尤其是对于一些业务内容很丰富的事物码如ME21N.VA01. 图 1 编译状态 产生编译 ...

  2. Elasticsearch-分片原理1

    Elasticsearch版本:6.0 Elasticsearch基于Lucene,采用倒排索引写入磁盘,Lucene引入了按段搜索的概念,来动态更新索引. 一个Lucene索引包含一个提交点和三个短 ...

  3. MVC4学习之官方教程中迁移版本库报错

    因工作需要,学习MVC4,但是微软官方教程中迁移版本库步骤在本地测试报错 官方教程地址:http://www.asp.net/mvc/overview/older-versions/getting-s ...

  4. MySQL如何找出未提交事务信息

    前阵子,我写了一篇博客"ORACLE中能否找到未提交事务的SQL语句", 那么在MySQL数据库中,我们能否找出未提交事务执行的SQL语句或未提交事务的相关信息呢? 实验验证了一下 ...

  5. .NET easyUI tree树状结构

    简单的制作后台制作写一个json(string类型)格式 public partial class goodstype_type : System.Web.UI.Page { public strin ...

  6. Windows7(x86) xampp php5.5 imagick install

    I hate windows. 1. 下载安装 ImageMagick, 选择合适您电脑的版本,我下载的是: ImageMagick-6.8.9-1-Q16-x86-dll.exe http://ww ...

  7. servlet forword服务器端跳转

    web.xml中配置servlet的映射和访问路径 <?xml version="1.0" encoding="UTF-8"?><web-ap ...

  8. 为什么我的C4C Service Request没办法Release到ERP?

    问题 UI上发现找不到Release to ERP的按钮: 但是在UI Designer里是能看到这个按钮的.检查其Visible的属性,绑到了一个Calculated Rule上面: 发现其显示在r ...

  9. SAP数据中心概述

    文章目录 SAP数据中心内部的组成部分 SAP数据中心的安全性 SAP数据中心的绿色运营 SAP云平台编程环境 Jerry的前一篇文章企业数字化转型与SAP云平台介绍了SAP云平台在企业数字化转型中的 ...

  10. UVA208 Firetruck 消防车(并查集,dfs)

    要输出所有路径,又要字典序,dfs最适合了,用并查集判断1和目的地是否连通即可 #include<bits/stdc++.h> using namespace std; ; int p[m ...