首先来看一下效果图;
先说一下我的需求:查看群成员,如果超过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); } }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的android中GridView实现点击查看更多功能示例全部内容,希望文章能够帮你解决android中GridView实现点击查看更多功能示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)