RecyclerView实现查看更多及收起
2019/7/7 22:13:06
本文主要是介绍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); } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。
这篇关于RecyclerView实现查看更多及收起的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路