RecyclerView實(shí)現(xiàn)查看更多及收起
本文實(shí)例為大家分享了RecyclerView實(shí)現(xiàn)查看更多及收起的具體代碼,供大家參考,具體內(nèi)容如下

三個list:
realList 真實(shí)list
hideList 隱藏時的list
openList 展開時的list
做法就是
判斷適配器條目小于4(可任意)時,將適配器list設(shè)置為真實(shí)list
判斷適配器條目大于4(可任意)時,將適配器hideList設(shè)置為真實(shí)list的前三個條目+查看更多;將適配器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;//展開
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;
}
//清除數(shù)據(jù)
public void clearData() {
if (list != null) {
this.list.clear();
notifyDataSetChanged();
}
}
class LuckyCodeViewHolder extends RecyclerView.ViewHolder {
TextView txtLuckyCode;//幸運(yùn)號碼
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)聽
luckyCodeAdapter.setHideOrShowCallBack(new LuckyCodeAdapter.HideOrShowCallBack() {
@Override
public void hide() {
luckyCodeAdapter.setHideList(luckyCodeHideList);
}
@Override
public void open() {
luckyCodeAdapter.setOpenList(luckyCodeOpenList);
}
});
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android MVP模式ListView中嵌入checkBox的使用方法
這篇文章主要介紹了Android MVP模式ListView中嵌入checkBox的使用方法,如何在ListView中嵌入checkBox配合使用,感興趣的小伙伴們可以參考一下2016-08-08
Android開發(fā)實(shí)現(xiàn)讀取assets目錄下db文件的方法示例
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)讀取assets目錄下db文件的方法,結(jié)合實(shí)例形式分析了Android針對assets目錄下SQLite數(shù)據(jù)庫文件的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
詳解Android中Runtime解決屏幕旋轉(zhuǎn)問題(推薦)
這篇文章主要介紹了Runtime解決屏幕旋轉(zhuǎn)問題的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
android設(shè)置adb自帶screenrecord錄屏命令
這篇文章主要介紹了android設(shè)置adb自帶screenrecord錄屏命令,需要的朋友可以參考下2018-11-11
Android?掃碼槍輸入時屏蔽軟鍵盤和頂部狀態(tài)欄的解決方案
在Android設(shè)備上,使用掃碼槍時常遇到軟鍵盤和頂部狀態(tài)欄顯示問題,本文介紹了在Android 7.1.2版本上,如何通過設(shè)置inputType為none屏蔽軟鍵盤,以及通過hideStatusBar和NoActionBar方法隱藏頂部狀態(tài)欄,以優(yōu)化掃碼槍使用界面,這些方法有助于提升使用掃碼槍場景的用戶體驗2024-10-10
Android解決viewpager嵌套滑動沖突并保留側(cè)滑菜單功能
這篇文章主要介紹了 解決viewpager嵌套滑動沖突,并保留側(cè)滑菜單功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-06-06

