Android实现recyclerview列表的展开更多和点击收起功能

在这里插入图片描述
在这里插入图片描述
1:布局文件使用recyclerview显示四列并加入阴影及点击按钮控件

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/main_bg"
    android:orientation="vertical">
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/region_recy"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="12dp"
                    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
                    app:spanCount="4" />

                <!--                阴影控件设置半透明-->
                <TextView
                    android:id="@+id/txt_yinying"
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:layout_gravity="bottom"
                    android:background="#b3ffffff" />
            </FrameLayout>

            <!--            //展开更多,点击收起-->
            <RelativeLayout
                android:id="@+id/rl_openall"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="12dp">

                <TextView
                    android:id="@+id/txt_open"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/main_bg"
                    android:gravity="center"
                    android:text="展开更多"
                    android:textColor="@color/txtblue"
                    android:textSize="14sp" />
            </RelativeLayout>

</LinearLayout>

2:代码中设置全部显示数据和收起显示数据

//regionBeans接口list集合数据
 private List<String> mList = new ArrayList<>();
    private List<String> HideList = new ArrayList<>();
            for (int i = 0; i < regionBeans.size(); i++) {
                     mList.add(regionBeans.get(i).getName());
                    }
                    //收起显示的数据仅显示16条
                    for (int i = 0; i < 16; i++) {
                            HideList.add(mList.get(i));
                    }
                    //适配器
                    mRegionAdapter = new RegionAdapter(KeywordActivity.this);
                    regionRecy.setAdapter(mRegionAdapter);
                    //默认设置收起时的数据
                    mRegionAdapter.setHideList(HideList);

RegionAdapter适配器中

public class RegionAdapter extends RecyclerView.Adapter<RegionAdapter.ViewHolder> {
    private Activity activity;
    private List<String> list;

    public RegionAdapter(Activity activity) {
        this.activity = activity;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(activity).inflate(R.layout.rmsf_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.mRmsfname.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

//显示收起时数据
    public void setHideList(List<String> newList) {
        this.list = newList;
        notifyDataSetChanged();
    }

//显示全部数据
    public void setOpenList(List<String> openList) {
        this.list = openList;
        notifyDataSetChanged();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView mRmsfname;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            mRmsfname = itemView.findViewById(R.id.rmsf_name);
        }
    }
}

3:点击收起展开按钮执行适配器的两个方法

  case R.id.rl_openall:
                if (txtOpen.getText().toString().equals("展开更多")) {
                    txtOpen.setText("点击收起");
                    txtYinying.setVisibility(View.GONE);
                    mRegionAdapter.setOpenList(mList);
                } else {
                    txtOpen.setText("展开更多");
                    txtYinying.setVisibility(View.VISIBLE);
                    mRegionAdapter.setHideList(HideList);
                }

                break;
Android开发中,RecyclerView是一种常用的列表展示件,它可以用于展示大量数据,并且支持自定义布局和交互效果。实现RecyclerView的加载更多功能可以通过以下步骤来完成: 1. 首先,在你的布局文件中添加RecyclerView控件,并为其指定一个唯一的id,例如: ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 在你的Activity或Fragment中,找到RecyclerView控件并创建一个适配器(Adapter)来管理数据的展示。适配器需要继承RecyclerView.Adapter类,并实现其中的几个方法,例如: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { // 数据集合 private List<Data> dataList; // 构造方法 public MyAdapter(List<Data> dataList) { this.dataList = dataList; } // 创建ViewHolder @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } // 绑定ViewHolder @Override public void onBindViewHolder(ViewHolder holder, int position) { Data data = dataList.get(position); // 设置数据到ViewHolder中的控件上 holder.textView.setText(data.getText()); } // 获取数据数量 @Override public int getItemCount() { return dataList.size(); } // ViewHolder类 public static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; public ViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } } ``` 3. 在你的Activity或Fragment中,设置RecyclerView的布局管理器(Layout Manager)和适配器(Adapter),例如: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new MyAdapter(dataList)); ``` 4. 实现加载更多功能,可以通过监听RecyclerView的滑动事件来实现。当用户滑动到列表底部时,触发加载更多的操作。具体实现可以参考以下步骤: - 在适配器中添加一个方法用于加载更多数据,例如: ```java public void loadMoreData(List<Data> moreDataList) { dataList.addAll(moreDataList); notifyDataSetChanged(); } ``` - 在Activity或Fragment中,为RecyclerView添加滑动监听器,并在滑动到底部时触发加载更多的操作,例如: ```java recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount && firstVisibleItemPosition >= 0) { // 滑动到底部,执行加载更多的操作 // 调用适配器的加载更多方法 adapter.loadMoreData(moreDataList); } } }); ``` 这样,当用户滑动到RecyclerView的底部时,就会触发加载更多的操作,新的数据会被添加到适配器中,并通过调用`notifyDataSetChanged()`方法来列表显示
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值