RecyclerView實(shí)現(xiàn)查看更多及收起
本文實(shí)例為大家分享了RecyclerView實(shí)現(xiàn)查看更多及收起的具體代碼,供大家參考,具體內(nèi)容如下
三個(gè)list:
realList 真實(shí)list
hideList 隱藏時(shí)的list
openList 展開(kāi)時(shí)的list
做法就是
判斷適配器條目小于4(可任意)時(shí),將適配器list設(shè)置為真實(shí)list
判斷適配器條目大于4(可任意)時(shí),將適配器hideList設(shè)置為真實(shí)list的前三個(gè)條目+查看更多;將適配器openList設(shè)置為真實(shí)list+收起
適配器代碼
public class LuckyCodeAdapter extends RecyclerView.Adapter<LuckyCodeAdapter.LuckyCodeViewHolder> { private Context context; private List<String> list; private boolean isHide;//隱藏 private boolean isOpen;//展開(kāi) 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; } //展開(kāi) public void setOpenList(List<String> openList) { this.list = openList; this.isOpen = true; this.isHide = false; notifyDataSetChanged(); } //不需要隱藏/展開(kāi) public void setRealList(List<String> realList) { this.list = realList; notifyDataSetChanged(); this.isHide = false; this.isOpen = false; } //清除數(shù)據(jù) public void clearData() { if (list != null) { this.list.clear(); notifyDataSetChanged(); } } class LuckyCodeViewHolder extends RecyclerView.ViewHolder { TextView txtLuckyCode;//幸運(yùn)號(hào)碼 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為真實(shí)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); }
設(shè)置監(jiān)聽(tīng)
luckyCodeAdapter.setHideOrShowCallBack(new LuckyCodeAdapter.HideOrShowCallBack() { @Override public void hide() { luckyCodeAdapter.setHideList(luckyCodeHideList); } @Override public void open() { luckyCodeAdapter.setOpenList(luckyCodeOpenList); } });
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中DrawerLayout實(shí)現(xiàn)側(cè)滑菜單效果
這篇文章主要為大家詳細(xì)介紹了Android中DrawerLayout實(shí)現(xiàn)側(cè)滑菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android基礎(chǔ)知識(shí)之frame動(dòng)畫效果
Android基礎(chǔ)知識(shí)之tween動(dòng)畫效果,Android一共提供了兩種動(dòng)畫,這篇文章主要介紹了Android動(dòng)畫效果之frame動(dòng)畫,感興趣的小伙伴們可以參考一下2016-06-06Android常見(jiàn)XML轉(zhuǎn)義字符(總結(jié))
下面小編就為大家?guī)?lái)一篇Android常見(jiàn)XML轉(zhuǎn)義字符(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04Android 對(duì)話框sweet-alert-dialog
這篇文章主要介紹了Android 對(duì)話框sweet-alert-dialog的相關(guān)資料,需要的朋友可以參考下2016-09-09Android中Fragment與Activity的生命周期對(duì)比
這篇文章主要介紹了Android中Fragment與Activity的生命周期對(duì)比,Fragment是在Activity的基礎(chǔ)之上進(jìn)行設(shè)計(jì)的,比Activity多出幾個(gè)控制生命周期的回調(diào)函數(shù),需要的朋友可以參考下2016-02-02Android實(shí)現(xiàn)點(diǎn)擊兩次返回鍵退出
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)點(diǎn)擊兩次返回鍵退出的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01