LinearLayoutManager

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">

<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/XRecy"
    ></com.jcodecraeer.xrecyclerview.XRecyclerView>

</RelativeLayout>

MainActivity

package com.example.yuekaomoni;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;

import com.example.yuekaomoni.adapter.MyAdapter;
import com.example.yuekaomoni.bean.MyData;
import com.example.yuekaomoni.utils.OkHttpUtils;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.io.IOException;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private XRecyclerView XRecy;
    private ArrayList<MyData.ResultsBean>mList=new ArrayList<>();
    private MyAdapter myAdapter;
   private String mUrl="https://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/";
   private int index=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        myAdapter = new MyAdapter(mList,this);
        XRecy.setAdapter(myAdapter);
        new MyTask().execute(mUrl+index);

        XRecy.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                index=1;
                mList.clear();
                new MyTask().execute(mUrl+index);
                shuaLogin();
            }

            @Override
            public void onLoadMore() {

                index++;
                new MyTask().execute(mUrl+index);
                shuaLogin();
            }
        });

    }


    private void initView() {
        XRecy = (XRecyclerView) findViewById(R.id.XRecy);
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        XRecy.setLayoutManager(linearLayoutManager);

    }


    private void shuaLogin(){
        XRecy.refreshComplete();
        XRecy.loadMoreComplete();

    }


    class MyTask extends AsyncTask<String,Void,MyData>{
        @Override
        protected MyData doInBackground(String... strings) {

            try {
                String jsonStr = OkHttpUtils.getInstance().get(strings[0]);
                Gson gson=new Gson();
                MyData myData = gson.fromJson(jsonStr, MyData.class);
                return myData;
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(MyData myData) {
            super.onPostExecute(myData);
            mList.addAll(myData.getResults());
            myAdapter.notifyDataSetChanged();
            shuaLogin();

        }
    }


}

适配器

package com.example.yuekaomoni.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.yuekaomoni.R;
import com.example.yuekaomoni.bean.MyData;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;

public class MyAdapter extends XRecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener {

    private ArrayList<MyData.ResultsBean> mList;
    private Context mContext;

    public MyAdapter(ArrayList<MyData.ResultsBean> mList, Context mContext) {
        this.mList = mList;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

      View view=  LayoutInflater.from(mContext).inflate(R.layout.list_item,viewGroup,false);
        ViewHolder holder=new ViewHolder(view);
          view.setOnClickListener(this);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyAdapter.ViewHolder viewHolder, int i) {

        viewHolder.xRecy_text.setText(mList.get(i).getWho());
        Glide.with(mContext).load(mList.get(i).getUrl()).into(viewHolder.xRecy_image);
        viewHolder.itemView.setTag(i);
    }

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

    @Override
    public void onClick(View v) {

    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private  TextView xRecy_text;
        private  ImageView xRecy_image;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            xRecy_text = itemView.findViewById(R.id.XRecy_Text);
            xRecy_image = itemView.findViewById(R.id.XRecy_Image);

        }
    }
}

工具类

package com.example.yuekaomoni.utils;

import java.io.IOException;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpUtils {

    private OkHttpClient okHttpClient;
    private OkHttpUtils(){
        okHttpClient=new OkHttpClient();
    }

    public static OkHttpUtils getInstance(){

        return okHttpHolde.utils;

    }

    static class okHttpHolde{

        private static final OkHttpUtils utils=new OkHttpUtils();

    }

    public String get(String url) throws IOException {
        Request request=new Request.Builder().url(url).build() ;

        Response execute = okHttpClient.newCall(request).execute();

        return execute.body().string();
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_43668405/article/details/85095520