工具类
public class HttpUtils {
public void httpGet(String path------传递接口地址){
OkHttpClient client = new OkHttpClient.Builder()
.build();
//创建一个request对象
Request request = new Request.Builder()
.url(path)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
mGetAsynInterface.failed();
}
@Override
public void onResponse(okhttp3.Call call, final Response response) throws IOException {
String data = response.body().string();
mGetAsynInterface.success(data);
}
});
}
//创建接口
public interface GetAsynInterface {
void success(String data);
void failed();
}
//声明接口名
private GetAsynInterface mGetAsynInterface;
//暴露方法,方便外界使用
public void setGetAsynInterface(GetAsynInterface getAsynInterface) {
mGetAsynInterface = getAsynInterface;
}
}
Activity
////////////接口地址
private String pathData=
"http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4";
//get异步请求
HttpUtils httpUtils = new HttpUtils();
httpUtils.httpGet(pathData);
//适配器
messAdapter = new MessAdapter(this);
//布局管理器
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2, GridLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(gridLayoutManager);
//分割线
recyclerView.addItemDecoration(new DividerItemDecoration(PageActivity.this,
DividerItemDecoration.VERTICAL));
recyclerView.setAdapter(messAdapter);
httpUtils.setGetAsynInterface(new HttpUtils.GetAsynInterface() {
@Override
public void success(final String data) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
MessageBean messageBean = gson.fromJson(data, MessageBean.class);
databean = messageBean.getData();
messAdapter.setData(databean);
}
});
}
@Override
public void failed() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(PageActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
}
});
}
});
}
Adapter
package wanghuiqi.bawie.com.wanghuiqi20181112.model;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
import wanghuiqi.bawie.com.wanghuiqi20181112.R;
import wanghuiqi.bawie.com.wanghuiqi20181112.model.bean.MessageBean;
public class MessAdapter extends RecyclerView.Adapter<MessAdapter.Viewholder> {
private Context context;
private List<MessageBean.DataBean> mList;
public MessAdapter(Context context) {
this.context = context;
mList = new ArrayList<>();
}
格外注意----在Activity调用
public void setData(List<MessageBean.DataBean> databean){
mList.clear();
if (databean!=null){
mList.addAll(databean);
}
notifyDataSetChanged();
}
适配器
@NonNull
@Override
public Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.list_item, null);
Viewholder holder = new Viewholder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull Viewholder holder, int position) {
holder.recyName.setText(mList.get(position).getThird_category());
ImageLoader.getInstance().displayImage(mList.get(position).getPic_url(),holder.recyImage);
}
@Override
public int getItemCount() {
return mList.size();
}
public class Viewholder extends RecyclerView.ViewHolder {
private final ImageView recyImage;
private final TextView recyName;
public Viewholder(View itemView) {
super(itemView);
recyImage = itemView.findViewById(R.id.recy_image);
recyName = itemView.findViewById(R.id.recy_name);
}
}
}