Android(安卓)ListView 实现 GridView
16lz
2021-01-26
Android ListView 实现 GridView 用以实现GridView的下拉刷新
分类:Android 2013-03-12 20:58 96人阅读 评论(0) 收藏 举报最近项目中碰到GridView下拉刷新的问题,google不到现成的资料,故此用listview来实现GridView,对ListView而言下拉刷新就很多资料可参考了,这里就不再啰嗦了。
ListViewAdapter.java
[html] view plain copy
- packagecom.example.grideview;
- importjava.util.List;
- importandroid.content.Context;
- importandroid.util.Log;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.view.ViewGroup;
- importandroid.widget.BaseAdapter;
- importandroid.widget.Button;
- publicclassListViewAdapterextendsBaseAdapter{
- privateList<String>list;
- privateContextcontext;
- publicListViewAdapter(Contextcontext){
- this.context=context;
- }
- publicvoidsetData(List<String>list){
- this.list=list;
- }
- @Override
- publicintgetCount(){
- //TODOAuto-generatedmethodstub
- //每列两项
- if(list.size()%2==0){
- returnlist.size()/2;
- }
- returnlist.size()/2+1;
- }
- @Override
- publicObjectgetItem(intposition){
- //TODOAuto-generatedmethodstub
- returnlist.get(position);
- }
- @Override
- publiclonggetItemId(intposition){
- //TODOAuto-generatedmethodstub
- returnposition;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- //TODOAuto-generatedmethodstub
- ViewHolderviewHolder=null;
- if(convertView==null){
- viewHolder=newViewHolder();
- convertView=View.inflate(context,R.layout.main,null);
- viewHolder.button1=(Button)convertView
- .findViewById(R.id.imageview1);
- viewHolder.button2=(Button)convertView
- .findViewById(R.id.imageview2);
- convertView.setTag(viewHolder);
- }else{
- viewHolder=(ViewHolder)convertView.getTag();
- }
- //position计算两列的情况下:position*2+1多列依次类推
- //第一列
- Stringstring1=list.get(position*2);
- viewHolder.button1.setText(string1);
- viewHolder.button1.setTag(string1);
- viewHolder.button1.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- Log.d("PAGE",v.getTag().toString());
- }
- });
- //position计算两列的情况下:position*2+1多列依次类推
- //第二列
- if((position*2+1)<list.size()){
- Stringstring2=list.get(position*2+1);
- viewHolder.button2.setText(string2);
- viewHolder.button2.setTag(string2);
- viewHolder.button2.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- Log.d("PAGE",v.getTag().toString());
- }
- });
- }else{
- //此处可以用一张透明图片替换避免Grid布局混乱
- viewHolder.button2.setVisibility(View.GONE);
- }
- returnconvertView;
- }
- classViewHolder{
- privateButtonbutton1;
- privateButtonbutton2;
- }
- }
其余代码就不贴了。可在此处下载 Demo。
更多相关文章
- android 问题汇总系列之六
- 转:android下拉列表框 spinner
- Android(安卓)下拉刷新,上拉加载动画,这一个就够了
- Android——PullToRefresh自动刷新
- Android常用UI之Spinner
- Android(安卓)5.0 之SwipeRefreshLayout
- Android根据当前时间获取前面的时间日期,或者之后的时间日期
- android listview 实现从数据库读取已读功能,服务器通知增加,刷新l
- 自定义Spinner下拉列表