Xrecycler或OkHttp拦截器加日志

拦截器依赖  implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'

写xrecycler之前必须把recycler的依赖导入,也就是说导两个依赖一个recycler和xrecycler

implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation ('com.jcodecraeer:xrecyclerview:1.5.9'){
    exclude group: 'com.android.support'
}

拦截器加日志

package com.example.kao13.util;


import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

/**
 * 封装工具类
 * 需要用到单例设计模式
 * 1:懒汉式
 * 2:饿汉式
 * 3:DCL
 * 4:容器模式(前面三种都不是很完善的处理单例)
 * <p>
 * 单例模式:保证这个内存空间里面只能有实例
 * 1:私有化构造器? 保证其他类不能创建实例
 * 2:想到了这个实例在这个内存空间还要提供给别的类使用所以要封装成一个方法让人调用
 */
public class OkHttpUtils {
    private OkHttpClient mOkHttpClient;
    private String string;

    private OkHttpUtils() {
        HttpLoggingInterceptor interceptor=new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        mOkHttpClient=new OkHttpClient.Builder()
                .connectTimeout(10,TimeUnit.SECONDS)
                .writeTimeout(10,TimeUnit.SECONDS)
                .readTimeout(10,TimeUnit.SECONDS)
                .addInterceptor(interceptor)
                .build();
        mOkHttpClient = new OkHttpClient();
    }

    public static OkHttpUtils getInstance() {
        return OkHttpHolder.utils;
    }



    static class OkHttpHolder {
        private static final OkHttpUtils utils = new OkHttpUtils();
    }


    //封装同步的Get请求方式
    public String get(String url,String mobile,String password) throws IOException {
        Request request=new Request.Builder().url(url+"?mobile="+mobile+"&password="+password).build();
        Response execute = mOkHttpClient.newCall(request).execute();
        return execute.body().string();
    }
    public String getHome(String url) throws IOException {
        Request request=new Request.Builder().url(url).build();
        Response execute = mOkHttpClient.newCall(request).execute();
        return execute.body().string();
    }
    public String post(String url){
        try {
        RequestBody requestBody = new FormBody.Builder()
                .add("mobile", "18730098284")
                .add("password", "123456")
                .build();
        Request request = new Request.Builder().url(url).post(requestBody).build();
        //发送请求newCall方法
            string = mOkHttpClient.newCall(request).execute().body().string();
        //通过call去处理给你响应Response
        } catch (IOException e) {
            e.printStackTrace();
        }
        return string;
    }

}

 三种布局按钮切换

package com.example.kao13;

import android.media.Image;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.example.kao13.adapter.BiaoAdapter;
import com.example.kao13.adapter.LiuAdapter;
import com.example.kao13.adapter.WangAdapter;
import com.example.kao13.bean.Mybean;
import com.example.kao13.presenter.PresenterImpl;
import com.example.kao13.view.MyView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements MyView, View.OnClickListener {

    private Button b1;
    private Button b2;
    private Button b3;
    private XRecyclerView recy;
    private String mUrl="http://www.zhaoapi.cn/product/getCatagory";
    private PresenterImpl presenter;
    private List<Mybean.DataBean> list;
    private List<ImageView> image=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //initData();
    }

    private void initData() {
        for (int i = 0; i < list.size(); i++) {
            ImageView imageView=new ImageView(this);
            image.add(imageView);
        }
    }

    @Override
    public void success(Mybean data) {
        list = data.getData();
    }

    @Override
    public void error(String error) {
        Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
    }

    private void initView() {
        b1 = (Button) findViewById(R.id.b1);
        b2 = (Button) findViewById(R.id.b2);
        b3 = (Button) findViewById(R.id.b3);
        recy =  findViewById(R.id.recy);
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        presenter=new PresenterImpl(this);
        presenter.startRequest(mUrl);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.b1:
                LinearLayoutManager manager=new LinearLayoutManager(this);
                recy.setLayoutManager(manager);
                BiaoAdapter adapter=new BiaoAdapter(list);
                recy.setAdapter(adapter);
                break;
            case R.id.b2:
                GridLayoutManager manager1=new GridLayoutManager(this,5);
                recy.setLayoutManager(manager1);
                WangAdapter adapter1=new WangAdapter(list);
                recy.setAdapter(adapter1);
                break;
            case R.id.b3:
                recy.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
                recy.setItemAnimator(new DefaultItemAnimator());
                recy.setPullRefreshEnabled(true);
                recy.setLoadingMoreEnabled(true);
                recy.setLoadingListener(new XRecyclerView.LoadingListener() {
                    @Override
                    public void onRefresh() {
                        list.clear();
                        presenter.startRequest(mUrl);
                        recy.refreshComplete();
                    }

                    @Override
                    public void onLoadMore() {
                        presenter.startRequest(mUrl);
                        recy.loadMoreComplete();
                    }
                });
                LiuAdapter adapter2=new LiuAdapter(list,this);
                recy.setAdapter(adapter2);
                break;
        }
    }
}

表布局

package com.example.kao13.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.TextView;

import com.example.kao13.R;
import com.example.kao13.bean.Mybean;
import java.util.List;

public class BiaoAdapter extends RecyclerView.Adapter<BiaoAdapter.ViewHolder> {
    private List<Mybean.DataBean>list;

    public BiaoAdapter(List<Mybean.DataBean> list) {
        this.list = list;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.biao,null);
        ViewHolder viewHolder=new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.textView.setText(list.get(i).getName());
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.biao_text);
        }
    }
}

网格布局

package com.example.kao13.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.TextView;

import com.example.kao13.R;
import com.example.kao13.bean.Mybean;
import java.util.List;

public class BiaoAdapter extends RecyclerView.Adapter<BiaoAdapter.ViewHolder> {
    private List<Mybean.DataBean>list;

    public BiaoAdapter(List<Mybean.DataBean> list) {
        this.list = list;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.biao,null);
        ViewHolder viewHolder=new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.textView.setText(list.get(i).getName());
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.biao_text);
        }
    }
}

 

瀑布流

package com.example.kao13.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.kao13.R;
import com.example.kao13.bean.Mybean;


import java.util.List;
import java.util.Random;

public class LiuAdapter extends RecyclerView.Adapter<LiuAdapter.ViewHoder> {
    private List<Mybean.DataBean> list;
    private Context context;

    public LiuAdapter(List<Mybean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public LiuAdapter.ViewHoder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.liu,viewGroup,false);
        ViewHoder viewHolder=new ViewHoder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull LiuAdapter.ViewHoder viewHoder, int i) {
        ViewGroup.LayoutParams params = viewHoder.itemView.getLayoutParams();
        Random random = new Random();
        int height = random.nextInt(300) + 300;
        params.height = height;
        viewHoder.itemView.setLayoutParams(params);
        Glide.with(context).load(list.get(i).getIcon()).into(viewHoder.imageView);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    public class ViewHoder extends RecyclerView.ViewHolder {
        ImageView imageView;
        public ViewHoder(@NonNull View itemView) {
            super(itemView);
            imageView=itemView.findViewById(R.id.image);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值