- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android自定义GridView/ListView数据源
在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮助我们实现我们想要的布局效果,并且在绑定大数据量时也不会感觉有卡壳现象。记得以前用一个ListView直接去绑定手机内的联系人Cursor(一百多号人),滑动的时候就会有卡的感觉。今天决定写个Demo是因为在项目中可能会要实现这样的一个效果:一个GridView中绑定4个ImageButton,有些按钮在特定的情况下是不可用的,也就是Enable=false;并且不同的按钮要拥有各自不同的点击事件。
实现第一点好办,添加一个标志位boolean bl来控制按钮的Enable状态,实现第二点就是将View.onClickListener添加到List列表中
1、MyAdapter.Java继承自BaseAdapter
Java代码
publicclassMyAdapterextendsBaseAdapter{
privateContextcontext;
privateList<Map<String,Object>>list;
privateLayoutInflatermInflater;
publicMyAdapter(Contextcontext,List<Map<String,Object>>list){
this.context=context;
this.list=list;
mInflater=LayoutInflater.from(this.context);
}
publicintgetCount(){
//TODOAuto-generatedmethodstub
if(list!=null)
returnlist.size();
else
return0;
}
publicObjectgetItem(intposition){
//TODOAuto-generatedmethodstub
if(list!=null)
returnlist.get(position);
else
returnnull;
}
publiclonggetItemId(intposition){
//TODOAuto-generatedmethodstub
returnposition;
}
@SuppressWarnings("unused")
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
//TODOAuto-generatedmethodstub
ViewHolderholder=null;
if(holder==null){
holder=newViewHolder();
convertView=mInflater.inflate(R.layout.gridview_item,null);
holder.ib=(ImageButton)convertView.findViewById(R.id.ib);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
//绑定点击事件
holder.ib.setOnClickListener((OnClickListener)list.get(position).get("listen"));
//通过标志位控制按钮的Enable
if(Boolean.parseBoolean(list.get(position).get("bl").toString()))
holder.ib.setEnabled(true);
else
holder.ib.setEnabled(false);
holder.ib.setImageResource(Integer.parseInt(list.get(position).get("icon").toString()));
returnconvertView;
}
publicfinalclassViewHolder{
publicImageButtonib;
}
}
2、绑定数据源
Java代码
publicclassMainextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privateGridViewgvtest;
privateList<Map<String,Object>>list;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(
文档评论(0)