android中GridView实现点击查看更多功能示例

发布时间 - 2026-01-10 22:56:10    点击率:

首先来看一下效果图;

 

先说一下我的需求:查看群成员,如果超过15人则全部显示,如果大于15人则先加载15人,其余的不显示,点击查看更多则加载全部。再来说一下我实现的逻辑:首先呢要判断群成员的人数,如果小于或者等于15就用GridView加载全部数据,隐藏查看更多的按钮。如果大于15人,则显示加载更多的按钮,先加载15条数据,其余的不加载,点击按钮之后获取全部数据放到自己写好的adapter里然后加载刷新,再隐藏加载更多的按钮。

好了,来看代码:

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_weight="1"
  android:background="@color/white"
  android:orientation="vertical">
 
  <GridView
    android:id="@+id/grid_member"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_margin="15dp"
    android:layout_weight="1"
    android:horizontalSpacing="15dp"
    android:numColumns="5"
    android:verticalSpacing="15dp"></GridView>
 
  <LinearLayout
    android:id="@+id/llayout_look_more"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/btn_white_selector"
    android:gravity="center">
 
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:drawableRight="@mipmap/arrow_down_qun"
      android:gravity="center"
      android:paddingBottom="30dp"
      android:paddingTop="15dp"
      android:text="查看更多群成员 "
      android:textSize="@dimen/small_middle_text_size" />
  </LinearLayout>
</LinearLayout>

然后是activity中部分判断的核心代码:

首先第一次判断和加载

if (mListData.size() > 15) {
  mGroupManageAdapter.setNumber(false);
  mLlayoutLookMore.setVisibility(View.VISIBLE);
} else {
  mGroupManageAdapter.setNumber(true);
  mLlayoutLookMore.setVisibility(View.GONE);
}
mGroupManageAdapter.replace(mListData);

点击按钮之后的代码:

mGroupManageAdapter.setNumber(true);
mLlayoutLookMore.setVisibility(View.GONE);
mGroupManageAdapter.replace(mListData);

再贴上我的adapter部分代码:

public class GroupManageAdapter extends BaseAdapter {
  private Context mContext;
  private List<PublicEntity> mList = new ArrayList<>();
  private boolean mListType = true;//是否显示全部成员,默认显示
 
  public void setNumber(boolean mListType) {
    this.mListType = mListType;
  }
 
  public GroupManageAdapter(Context mContext) {
    this.mContext = mContext;
  }
public void replace(List<PublicEntity> itemDataTypes) {
  mList.clear();
  if (itemDataTypes.size() > 0) {
    mList.addAll(itemDataTypes);
    notifyDataSetChanged();
  }
}
 
 @Override
 public int getCount() {
 return mListType ? mList.size() : 15;
 }
 
 @Override
 public Object getItem(int position) {
 return mList.get(position);
 }
 
 @Override
 public long getItemId(int position) {
 return position;
 }
 
 @Override
 public View getView(final int position, View convertView, ViewGroup parent) {
 final ViewHolder holder;
 if (convertView == null) {
 convertView = View.inflate(mContext, R.layout.item_group_manage_head, null);
 holder = new ViewHolder(convertView);
 convertView.setTag(holder);
 } else {
 holder = (ViewHolder) convertView.getTag();
 }
 String mPic = mList.get(position).getTextOne();
 if (mPic != null && mPic.length() > 0) {
 Picasso.with(mContext).load(mPic)
 .placeholder(R.mipmap.s_hearder_user_nor)
 .error(R.mipmap.s_hearder_user_nor)
 .transform(new CircleTransform()).into(holder.mImgHead);
 } else {
 holder.mImgHead.setImageResource(R.mipmap.s_hearder_user_nor);
 }
 
//这里是删除成员的标记,不管。
 if (mList.get(position).ismIsShowDeleteIcon()) {
 holder.mImgIconDelete.setVisibility(View.VISIBLE);
 } else {
 holder.mImgIconDelete.setVisibility(View.GONE);
 }
 
 holder.mTvName.setText(mList.get(position).getText());
 return convertView;
 }
 
 static class ViewHolder {
 @BindView(R.id.img_head)
 ImageView mImgHead;
 @BindView(R.id.img_icon_delete)
 ImageView mImgIconDelete;
 @BindView(R.id.tv_name)
 TextView mTvName;
 
 ViewHolder(View view) {
 ButterKnife.bind(this, view);
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# gridview点击显示更多  # android点击查看更多  # android实现点击更多  # Android GridView简单实例  # Android中控件GridView实现设置行列分割线的方法示例  # Android使用GridView实现日历功能示例(详细代码)  # Android使用GridView实现日历的简单功能  # Android自定义DataGridView数据表格控件  # Android 利用ViewPager+GridView实现首页导航栏布局分页效果  # Android 中 GridView嵌套在ScrollView里只有一行的解决方法  # Android GridView实现动画效果实现代码  # 加载  # 查看更多  # 人则  # 好了  # 再来  # 点击查看  # 就用  # 贴上  # 先说  # 写好  # 大家多多  # 多则  # arrow_down_qun  # mipmap  # drawableRight  # paddingBottom  # text  # paddingTop  # center  # btn_white_selector 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 教你用AI将一段旋律扩展成一首完整的曲子  Android 常见的图片加载框架详细介绍  网易LOFTER官网链接 老福特网页版登录地址  如何获取PHP WAP自助建站系统源码?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何创建自定义中间件?(Middleware代码示例)  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何快速建站并高效导出源代码?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  BootStrap整体框架之基础布局组件  如何快速重置建站主机并恢复默认配置?  如何在万网自助建站中设置域名及备案?  js实现获取鼠标当前的位置  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  网站图片在线制作软件,怎么在图片上做链接?  javascript日期怎么处理_如何格式化输出  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  怎样使用JSON进行数据交换_它有什么限制  JavaScript模板引擎Template.js使用详解  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  EditPlus中的正则表达式 实战(2)  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  如何在搬瓦工VPS快速搭建网站?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  大同网页,大同瑞慈医院官网?  文字头像制作网站推荐软件,醒图能自动配文字吗?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  深入理解Android中的xmlns:tools属性  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Bootstrap CSS布局之列表  香港服务器WordPress建站指南:SEO优化与高效部署策略  javascript基本数据类型及类型检测常用方法小结  如何在阿里云虚拟主机上快速搭建个人网站?  如何用PHP快速搭建CMS系统?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何在万网主机上快速搭建网站?  如何在阿里云香港服务器快速搭建网站?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel怎么在Blade中安全地输出原始HTML内容  如何快速搭建安全的FTP站点?  详解jQuery停止动画——stop()方法的使用