简单实现XRecyclerView刷新加载

 //okhttp的依赖
    compile 'com.squareup.okhttp3:okhttp:3.4.2'
    //图片加载框架glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
    //recyclerview的依赖
    implementation 'com.android.support:recyclerview-v7:26.+'
    //okhttp日志拦截器
    implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
    //xrecyclerview的依赖上下拉刷新
    implementation 'com.jcodecraeer:xrecyclerview:1.5.9'



configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '27.1.1'
            }
        }
    }
}

okHttp的工具类
public class OkHttpMessager {
    private static Handler mhandler;
    private final OkHttpClient ok;
    private static OkHttpMessager okHttpMessager;


    public OkHttpMessager()
 {
okhttp日志拦截器

 HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);



 ok = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .build();
        mhandler = new Handler();
    }
回调的方法
    public static OkHttpMessager getshu(){
        if (okHttpMessager==null){
            okHttpMessager = new OkHttpMessager();

        }
        return okHttpMessager;
    }
接口的固定模式
    interface fun1
    {
        void onres(String string);
    }

    private static void onsuccess(final String string,final fun1 callback)
    {
        mhandler.post(new Runnable() {
            @Override
            public void run() {
                if (callback!=null)
                {
                    callback.onres(string);
                }
            }
        });
    }
    public void say(String url, final fun1 callback)
    {
        Request build = new Request.Builder().url(url).build();
        ok.newCall(build).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                onsuccess(response.body().string(),callback);
            }
        });
    }

}
 
public class MainActivity extends AppCompatActivity {
    private XRecyclerView recyclerView;
    private int page = 1;
    private int pagetype = 1;
    private MyAdapter myAdapter;
    private List<ReaBean.NewslistBean> datas;
    private String path = "http://api.tianapi.com/social/?key=b6605dd3366f74ff0b56c518bcf9791e&num=10&page=" + page;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage( msg );
            datas = (List<ReaBean.NewslistBean>) msg.obj;
            setAdapter();

        }
    };

    private void setAdapter() {
        if (myAdapter == null) {
            myAdapter = new MyAdapter( datas, MainActivity.this );
            recyclerView.setAdapter( myAdapter );
            recyclerView.setLayoutManager( new LinearLayoutManager( MainActivity.this, LinearLayoutManager.VERTICAL, false ) );
        }
        myAdapter.notifyDataSetChanged();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        datas = new ArrayList<>();
        recyclerView = findViewById( R.id.lv );
        initPlv();
        initData(path);
    }

    private void initPlv() {
可以有可以没有,
 
XRecyclerView自带上下啦刷新功能

//recyclerView.setPullRefreshEnabled( true );

// recyclerView.setLoadingMoreEnabled( true );

recyclerView.setLoadingListener( new XRecyclerView.LoadingListener() {

@Override public void onRefresh() {

pagetype = 1;

page = 1;

path = "http://api.tianapi.com/social/?key=b6605dd3366f74ff0b56c518bcf9791e&num=10&page=" + page; initData(path);

recyclerView.refreshComplete();

} @Override

public void onLoadMore() {

pagetype = 2;

page++;

path = "http://api.tianapi.com/social/?key=b6605dd3366f74ff0b56c518bcf9791e&num=10&page=" + page; initData(path);

recyclerView.loadMoreComplete(); } }

); }

private void initData(String path) {

OkHttpMessager getshu = OkHttpMessager.getshu();

getshu.say( path, new OkHttpMessager.fun1() {

@Override public void onres(String string) {

Gson gson = new Gson();

ReaBean reaBean = gson.fromJson( string, ReaBean.class );

List<ReaBean.NewslistBean> data = reaBean.getNewslist();

if (pagetype == 1) {

datas.clear();

} datas.addAll( data );

Message obtain = Message.obtain();

obtain.obj = datas;

handler.sendMessage( obtain ); } } );

}}适配器没有写

布局没有写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值