private static OkHttpClient okHttpClient;
@Override
public void onCreate() {
super.onCreate();
okHttpClient = new OkHttpClient();
okHttpClient = okHttpClient
.newBuilder()
.connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.build();
}
public static OkHttpClient getokhttp() {
return okHttpClient;
}
}
package com.example.recyclerviewdemo;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.bawei.swiperefreshlayoutlibrary.SwipyRefreshLayout;
import com.bawei.swiperefreshlayoutlibrary.SwipyRefreshLayoutDirection;
import com.example.recyclerviewdemo.app.MyApplication;
import com.example.recyclerviewdemo.bean.NewsInfo;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private int page = 1;
private RecyclerView recyclerView;
private List<NewsInfo.GoodsListBean> list;
private SwipyRefreshLayout swipyRefreshLayout;
private Handler handler = null;
private RecyclerAdapter recycler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler = new Handler();
//找到控件
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
swipyRefreshLayout = (SwipyRefreshLayout) findViewById(R.id.refresh);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
linearLayoutManager.setOrientation(linearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
//刷新
swipyRefreshLayout.setDirection(SwipyRefreshLayoutDirection.BOTH);
swipyRefreshLayout.setOnRefreshListener(new SwipyRefreshLayout.OnRefreshListener()
{
@Override
public void onRefresh(int index) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
page++;
getData();
swipyRefreshLayout.setRefreshing(false);
Toast.makeText(MainActivity.this, "刷新成功", Toast.LENGTH_SHORT).show();
recycler.notifyDataSetChanged();
}
}, 2000);
}
@Override
public void onLoad(int index) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
page++;
getData();
swipyRefreshLayout.setRefreshing(false);
Toast.makeText(MainActivity.this, "加载成功", Toast.LENGTH_SHORT).show();
recycler.notifyDataSetChanged();
}
}, 2000);
}
});
getData();
}
//使用okhttp获取网络数据
private void getData() {
Request build = new Request.Builder().url("http://apiv3.yangkeduo.com/v5/newlist?page=" + page + "&size=20").build();
MyApplication.getokhttp().newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String result = response.body().string();
//解析数据
Gson gson = new Gson();
NewsInfo newsInfo = gson.fromJson(result, NewsInfo.class);
list = newsInfo.getGoods_list();
runOnUiThread(new Runnable() {
@Override
public void run() {
recycler = new RecyclerAdapter(list, MainActivity.this);
recyclerView.setAdapter(recycler);
}
});
}
}
});
}
}
package com.example.recyclerviewdemo;
import android.content.Context;
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 android.widget.Toast;
import com.bumptech.glide.Glide;
import com.example.recyclerviewdemo.bean.NewsInfo;
import java.util.List;
/**
* Created by xxsj on 2017/10/18.
*/
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>{
private List<NewsInfo.GoodsListBean> list;
private Context context;
public RecyclerAdapter(List<NewsInfo.GoodsListBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.textview.setText(list.get(position).getGoods_name());
holder.textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, list.get(position).getGoods_name(), Toast.LENGTH_SHORT).show();
}
});
final String image = list.get(position).getThumb_url();
Glide.with(context)
.load(image)
.into(holder.image);
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private ImageView image;
private TextView textview;
public MyViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
textview = (TextView) itemView.findViewById(R.id.textview);
}
}
}
<com.bawei.swiperefreshlayoutlibrary.SwipyRefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</com.bawei.swiperefreshlayoutlibrary.SwipyRefreshLayout>