首页 > 系统 > Android > 正文

RecyclerView实现查看更多及收起

2019-10-22 18:17:58
字体:
来源:转载
供稿:网友

本文实例为大家分享了RecyclerView实现查看更多及收起的具体代码,供大家参考,具体内容如下

RecyclerView,查看更多

三个list:

realList 真实list
hideList 隐藏时的list
openList 展开时的list

做法就是

判断适配器条目小于4(可任意)时,将适配器list设置为真实list
判断适配器条目大于4(可任意)时,将适配器hideList设置为真实list的前三个条目+查看更多;将适配器openList设置为真实list+收起

适配器代码

public class LuckyCodeAdapter extends RecyclerView.Adapter<LuckyCodeAdapter.LuckyCodeViewHolder> { private Context context; private List<String> list; private boolean isHide;//隐藏 private boolean isOpen;//展开 public LuckyCodeAdapter(Context context) {  this.context = context; } @Override public LuckyCodeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  View v = LayoutInflater.from(context).inflate(R.layout.item_tosanpup_lucky_code, parent, false);  return new LuckyCodeViewHolder(v); } @Override public void onBindViewHolder(LuckyCodeViewHolder holder, final int position) {  holder.txtLuckyCode.setText(list.get(position));  if (hideOrShowCallBack != null) {   holder.txtLuckyCode.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {     if (position == list.size() - 1) {      if (isOpen) {       hideOrShowCallBack.hide();       return;      }      if (isHide) {       hideOrShowCallBack.open();       return;      }     }    }   });  } } @Override public int getItemCount() {  return list == null ? 0 : list.size(); } //隐藏 public void setHideList(List<String> newList) {  this.list = newList;  notifyDataSetChanged();  this.isHide = true;  this.isOpen = false; } //展开 public void setOpenList(List<String> openList) {  this.list = openList;  this.isOpen = true;  this.isHide = false;  notifyDataSetChanged(); } //不需要隐藏/展开 public void setRealList(List<String> realList) {  this.list = realList;  notifyDataSetChanged();  this.isHide = false;  this.isOpen = false; } //清除数据 public void clearData() {  if (list != null) {   this.list.clear();   notifyDataSetChanged();  } } class LuckyCodeViewHolder extends RecyclerView.ViewHolder {  TextView txtLuckyCode;//幸运号码  public LuckyCodeViewHolder(View itemView) {   super(itemView);   txtLuckyCode = (TextView) itemView;  } } private HideOrShowCallBack hideOrShowCallBack; public void setHideOrShowCallBack(HideOrShowCallBack hideOrShowCallBack) {  this.hideOrShowCallBack = hideOrShowCallBack; } public interface HideOrShowCallBack {  void hide();  void open(); }}
//luckyList为真实list,判断是否需要隐藏 if (luckyList.size() > 4) {   luckyCodeHideList = new ArrayList<>();   luckyCodeOpenList = new ArrayList<>();   for (int i = 0; i < luckyList.size(); i++) {    luckyCodeOpenList.add(luckyList.get(i));   }   luckyCodeOpenList.add("收起");   for (int i = 0; i < 3; i++) {    luckyCodeHideList.add(luckyList.get(i));   }   luckyCodeHideList.add("查看更多");   luckyCodeAdapter.setHideList(luckyCodeHideList);  } else {   luckyCodeAdapter.setRealList(luckyList);  }

设置监听

luckyCodeAdapter.setHideOrShowCallBack(new LuckyCodeAdapter.HideOrShowCallBack() {   @Override   public void hide() {    luckyCodeAdapter.setHideList(luckyCodeHideList);   }   @Override   public void open() {    luckyCodeAdapter.setOpenList(luckyCodeOpenList);   }  });

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


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表