布局文件
<?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();
}
}