OKHttp 工具类 --接口回调-----不是整个项目

工具类

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);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/WhuiQi/article/details/84109851