Android(安卓)ListView 实现 GridView 用以实现GridView的下拉刷新
16lz
2021-01-26
最近项目中碰到GridView下拉刷新的问题,google不到现成的资料,故此用listview来实现GridView,对ListView而言下拉刷新就很多资料可参考了,这里就不再啰嗦了。
ListViewAdapter.java
package com.example.grideview;import java.util.List;import android.content.Context;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;public class ListViewAdapter extends BaseAdapter {private List list;private Context context;public ListViewAdapter(Context context) {this.context = context;}public void setData(List list) {this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stub// 每列两项if (list.size() % 2 == 0) {return list.size() / 2;}return list.size() / 2 + 1;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();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 多列依次类推 //第一列String string1 = list.get(position * 2);viewHolder.button1.setText(string1);viewHolder.button1.setTag(string1);viewHolder.button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubLog.d("PAGE", v.getTag().toString());}});//position计算 两列的情况下:position* 2 +1 多列依次类推 //第二列if ((position * 2 + 1) < list.size()) {String string2 = list.get(position * 2 + 1);viewHolder.button2.setText(string2);viewHolder.button2.setTag(string2);viewHolder.button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubLog.d("PAGE", v.getTag().toString());}});} else {//此处可以用一张透明图片替换 避免Grid布局混乱viewHolder.button2.setVisibility(View.GONE);}return convertView;}class ViewHolder {private Button button1;private Button button2;}}
其余代码就不贴了。可在此处下载 Demo。
更多相关文章
- android ActionBar-PullToRefresh 下拉刷新的使用方法
- android自定义Spinner的下拉样式(setDropDownViewResource)
- Android(安卓)ListView下拉刷新上拉自动加载更多DEMO示例
- Android(安卓)锁屏状态下拉起某个页面
- SwipeRefreshLayout Android(安卓)自带的下拉刷新布局
- 仿QQ下拉菜单列表 自定义Spinner
- Android(安卓)实现登录界面和功能实例
- Android笔记之:App列表之下拉刷新的使用
- android-PullToRefreshListView自动刷新问题