30、自定义gridview
要想实现自定义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的更多相关文章
- android 自定义gridview(导航)
最近又重新做回安卓,做了个小项目.下绝心使用android studio,通过这一回实战,终于用上了.综合了前人的经验,搞了个自己满意的导航界面,用的是gridview. 代码: package co ...
- 自定义GridView实现分割线解析
前两天在些项目的时候碰到常用的GridView要实现一些分割线,之前就是用本方法利用listView和Item的背景颜色的不同线显示分割线.这是最low的一种做法.于是我就简单的写了一个自定义的 Gr ...
- yii2-basic后台管理功能开发之三:自定义GridView列显示
在第二篇 yii2-basic后台管理功能开发之二:创建CRUD增删改查 中,我们利用gii工具生成的结果一般并不是我们想要的结果. 我们需要根据自己的需求自定义列显示.我遇到的主要是一下变更: 时间 ...
- Android开发:自定义GridView/ListView数据源
http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮 ...
- 一个可以拖动的自定义Gridview代码
这个可以拖动的gridview继承于gridview,所以,用法和gridview一样, 代码如下: public class DragGridView extends GridView { priv ...
- GridView布局,自定义适配器,水平滚动
添加GridItem布局XML文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- GridView自定义分页样式(上一页,下一页,到第几页)
今天要为网站做一个文章列表,发现GridView的分页样式很难看,于是结合网上的例子,自己做了一个.不是很美观,不过还是很实用的,先看下效果吧,如图(1). 图(1)GridView分页效果 自定义G ...
- 初始ASP.NET数据控件GridView
使用GridView控件绑定数据源 GridView控件个人认为就是数据表格控件,它以表格的形式显示数据源中的数据.每列表示一个字段,每行表示一条记录. GridView控件支持在页面有一下功 ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
随机推荐
- Kendo MVVM 数据绑定(四) Disabled/Enabled
Kendo MVVM 数据绑定(四) Disabled/Enabled Disabled 和 Enabled 绑定可以根据 ViewModel 的某个属性值的 true,false 来设置 DOM 元 ...
- Appium基础三:Appium实现原理
1.web自动化测试用的selenium webdriver 是c/s模式,server端和client端是通过webdriver protocol实现的,而Appium是参考selenium开发的, ...
- zfs和ufs文件系统
系统环境:freebsd 在zfs文件系统上的文件拷贝到ufs文件系统之后,大小翻了一倍.初步断定是文件系统导致的.不知道以后还会不会有新发现.come on!
- python发送邮件 示例
示例1 import smtplib from email.mime.text import MIMEText from email.header import Header def sedmail( ...
- Winform中Checkbox与其他集合列表类型之间进行关联
本文提供了Checkbox与CheckedListBox.DataGridViewCheckBoxColumn等的联动关系 1.CheckboxAssociateFactroy.Create创建联动关 ...
- POJ 2184 Cow Exhibition 奶牛展(01背包,变形)
题意:有只奶牛要证明奶牛不笨,所以要带一些奶牛伙伴去证明自己.牛有智商和幽默感,两者可为负的(难在这),要求所有牛的智商和之 / 幽默感之和都不为负.求两者之和的最大值. 思路:每只牛可以带或不带上, ...
- 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows
题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...
- 【Python图像特征的音乐序列生成】GitHub已经有人将mingus改到了Python3版本
https://github.com/bspaans/python-mingus/issues/45 注意此时的安装方法应该是: git clone https://github.com/edudob ...
- 使用工具Source Monitor测量您Java代码的环复杂度
代码的环复杂度(Cyclomatic complexity,有时也翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 来看看计算公式. 代码环 ...
- Python2 和Python3 的区别
print Python 2中的print语句被Python 3中的print()函数取代,这意味着在Python 3中必须用括号将需要输出的对象括起来. 在Python 2中使用额外的括号也是可以的 ...