0
【领券联盟】笔记:视频15-请求分类数据
破小布的小花狗 发表于 2020-03-26 21:45 69

课前准备

  • 修改 LogUtils :把 Class clazz 改成 Object object
public class LogUtils {

    private static int currentLev = 4;
    private static final int DEBUG_LEV = 4;
    private static final int INFO_LEV = 3;
    private static final int WARNING_LEV = 2;
    private static final int ERROR_LEV = 1;

    public static void d(Object object,String log) {
        if(currentLev >= DEBUG_LEV) {
            Log.d(object.getClass().getSimpleName(),log);
        }
    }

    public static void i(Object object,String log) {
        if(currentLev >= INFO_LEV) {
            Log.i(object.getClass().getSimpleName(),log);
        }
    }

    public static void w(Object object,String log) {
        if(currentLev >= WARNING_LEV) {
            Log.w(object.getClass().getSimpleName(),log);
        }
    }

    public static void e(Object object,String log) {
        if(currentLev >= ERROR_LEV) {
            Log.e(object.getClass().getSimpleName(),log);
        }
    }
}
  • 添加网络访问权限
	<uses-permission android:name="android.permission.INTERNET" />

课堂笔记

  • model 文件夹下创建接口 Api
public interface Api {
    @GET("discovery/categories")
    Call<Categories> getCategories();
}
  • utils 文件夹下创建单例类 RetrofitManager
public class RetrofitManager {
    private static final RetrofitManager ourInstance = new RetrofitManager();
    private final Retrofit mRetrofit;

    public static RetrofitManager getInstance() {
        return ourInstance;
    }

    private RetrofitManager() {
        mRetrofit = new Retrofit.Builder()
                .baseUrl(Constant.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public Retrofit getRetrofit() {
        return mRetrofit;
    }
}

常量 BASE_URLutils 文件夹下常量类 Constant 中创建

public class Constant {

    public static final String BASE_URL = "https://api.sunofbeach.net/shop/api/";
}
  • 获取 请求分类数据 的代码
@Override
    public void getCategories() {
        Retrofit retrofit = RetrofitManager.getInstance().getRetrofit();
        Api api = retrofit.create(Api.class);
        Call<Categories> task = api.getCategories();
        task.enqueue(new Callback<Categories>() {
            @Override
            public void onResponse(Call<Categories> call, Response<Categories> response) {
                int code = response.code();
                LogUtils.d(HomePresenterImpl.this, "HomePresenterImpl code ----->" + code);
                if (code == HttpURLConnection.HTTP_OK) {
                    //请求成功
                    Categories body = response.body();
                    LogUtils.d(HomePresenterImpl.this, "HomePresenterImpl body ----->" + body.toString());
                } else {
                    //请求失败
                    LogUtils.i(HomePresenterImpl.this, "请求失败....");
                }
            }

            @Override
            public void onFailure(Call<Categories> call, Throwable t) {
                //请求失败
                LogUtils.i(HomePresenterImpl.this, "请求失败....");
            }
        });
    }

学习感悟

  • 这节课如果有同学程序一直崩,需要在 module gradleandroid 下加以下代码
compileOptions{
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
  • Android 初学者一名,请老师和各位同学讨论指正
评论
0/240
  • 拉大锯
    不错,哈哈,给后面的同学带来了帮助。
    2020-03-27 00:26  回复
    1153952789488054272
    • 破小布的小花狗  回复 @拉大锯
      这是第二遍写代码照着你的笔记样式写的,就是写笔记花的时间比写代码花的多多了,请老师多建议指导,刚又写了一篇
      破小布的小花狗 2020-03-27 00:26   回复 1212268821507858432
    • 拉大锯  回复 @破小布的小花狗
      其实并不是说必须写,而是你遇到的问题,你解决的过程。这些可以分享出来。看了视频的同学,基本上都能跟着视频做。但是呢,很多同学没有解决问题的能力,或者办法。这需要积累的。所以这个时候这种分享就很有价值了。
      拉大锯 2020-03-27 00:26   回复 1153952789488054272
    • 破小布的小花狗  回复 @拉大锯
      ok,也是我温故知新,加深记忆
      破小布的小花狗 2020-03-27 00:26   回复 1212268821507858432
文章目录