b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

032 Android智能下拉刷新框架-SmartRefreshLayout+RecyclerView的使用

电脑杂谈  发布时间:2019-08-28 01:03:16  来源:网络整理

recyclerview多层嵌套_php json解析多层嵌套_recyclerview嵌套使用

1.SmartRefreshLayout介绍

SmartRefreshLayout的目标是成为一个强大,稳定recyclerview多层嵌套,成熟的下拉刷新框架,并集成各类的时尚、多样、实用、美观的Header和Footer。 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局recyclerview多层嵌套,由于它的“智能”,它不仅仅支持所有的View,还支持多层嵌套的视图结构。 它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了以后流行的各类刷新布局的特点,包括谷歌官方的SwipeRefreshLayout, 其他第三方的Ultra-Pull-To-Refresh、TwinklingRefreshLayout。 还集成了诸多炫酷的 Header 和 Footer。

recyclerview嵌套使用_recyclerview多层嵌套_php json解析多层嵌套

2.使用方法

(1)在 build.gradle (app)中添加依赖

recyclerview嵌套使用_recyclerview多层嵌套_php json解析多层嵌套

    implementation ‘com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-26‘
    implementation ‘com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-26‘//没有使用特殊Header,可以不加这行
    implementation ‘com.android.support:design:28.0.0‘

(2)布局文件(使用SmartRefreshLayout和RecyclerView)

recyclerview嵌套使用_recyclerview多层嵌套_php json解析多层嵌套

<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"
        android:scrollbars="vertical"
        android:background="#fff" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

(3)RecyclerView的item布局

recyclerview嵌套使用_recyclerview多层嵌套_php json解析多层嵌套

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="28dp"
        android:textSize="16sp"
        android:textStyle="bold"
        android:text="hehe"/>
</RelativeLayout>

(4)java后台

package com.example.administrator.test65smartrefreshlayout;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.constant.SpinnerStyle;
import com.scwang.smartrefresh.layout.footer.BallPulseFooter;
import com.scwang.smartrefresh.layout.listener.SimpleMultiPurposeListener;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
    RecyclerView mRecyclerView;
    MyAdapter mAdapter;
    LinearLayoutManager mLayoutManager;
    RefreshLayout refreshLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mRecyclerView = findViewById(R.id.my_recycler_view);
        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
        mRecyclerView.setHasFixedSize(true);
        mAdapter = new MyAdapter(getDatas());
        mRecyclerView.setAdapter(mAdapter);
    }
    private void initView() {
        refreshLayout = findViewById(R.id.refreshLayout);
        /**
         * 设置不同的头部、底部样式
         */
//        refreshLayout.setRefreshFooter(new ClassicsFooter(this).setSpinnerStyle(SpinnerStyle.Scale));
//        refreshLayout.setRefreshHeader(new BezierRadarHeader(this));
//        refreshLayout.setRefreshHeader(new TwoLevelHeader(this));
        refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));
        refreshLayout.setRefreshHeader(new MaterialHeader(this).setShowBezierWave(true));
        //设置样式后面的背景颜色
        refreshLayout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);
        //设置器,包括顶部下拉刷新、底部上滑刷新
        refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener(){
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                mAdapter.refreshData(MoreDatas()); //下拉刷新,数据从上往下添加到界面上
                refreshLayout.finishRefresh(1000); //这个记得设置,否则一直转圈
            }
            @Override
            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                mAdapter.loadMore(MoreDatas());  //上滑刷新,数据从下往上添加到界面上
                refreshLayout.finishLoadMore(1000); //这个记得设置,否则一直转圈
            }
        });
    }
    //原始的recyclerView数据
    private ArrayList<String> getDatas() {
        ArrayList<String> data = new ArrayList<>();
        String temp = " item";
        for(int i = 0; i < 15; i++) {
            data.add(i + temp);
        }
        return data;
    }
    //刷新得到的数据
    private ArrayList<String> MoreDatas() {
        ArrayList<String> data = new ArrayList<>();
        String temp = "新加数据 ";
        for(int i = 0; i < 6; i++) {
            data.add(temp + i);
        }
        return data;
    }
    public static class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
        public ArrayList<String> datas = null;
        public MyAdapter(ArrayList<String> datas) {
            this.datas = datas;
        }
        //创建新View,被LayoutManager所调用
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerview_smartrefreshlayout_item,viewGroup,false);
            ViewHolder vh = new ViewHolder(view);
            return vh;
        }
        //将数据与界面进行绑定的操作
        @Override
        public void onBindViewHolder(ViewHolder viewHolder, int position) {
            viewHolder.mTextView.setText(datas.get(position));
        }
        //获取数据的数量
        @Override
        public int getItemCount() {
            return datas.size();
        }
        //底部上拉刷新,数据直接在底部显示
        public void loadMore(ArrayList<String> strings) {
            datas.addAll(strings);
            notifyDataSetChanged();
        }
        //底部下拉刷新,数据直接从上往下添加数据,显示在顶部
        public void refreshData(ArrayList<String> strings) {
            datas.addAll(0, strings);
            notifyDataSetChanged();
//            notifyItemInserted(0); 一次只能加一项数据
        }
        //自定义的ViewHolder,持有每个Item的的所有界面元素
        public static class ViewHolder extends RecyclerView.ViewHolder {
            public TextView mTextView;
            public ViewHolder(View view){
                super(view);
                mTextView = view.findViewById(R.id.text);
            }
        }
    }
}

3.效果图


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-120786-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...