package com.bwei.day11_lianxi1.activity;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.widget.Toast;
import com.bwei.day11_lianxi1.R;
import com.bwei.day11_lianxi1.adapter.SubAdapter;
import com.bwei.day11_lianxi1.bean.UserBean;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private Context context;
private RecyclerView rl_view;
//1.定义接口
private static final String url_string = "https://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1";
private static final int sove_data = 100;
//6.定义handler处理信息
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//7.接收
switch (msg.what){
case sove_data:
//12.RecylerView要处理的数据源
String responseString = (String) msg.obj;
//14.Gson进行解析
Gson gson = new Gson();
UserBean userBean = gson.fromJson(responseString, UserBean.class);
List<UserBean.ResultsBean> beanList = userBean.getResults();
Log.i("aaa",beanList.toString());
//线性布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
rl_view.setLayoutManager(linearLayoutManager);
//13.将数据源设置给适配器
SubAdapter subAdapter = new SubAdapter(context, beanList);
rl_view.setAdapter(subAdapter);
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//2.请求数据获取数据源
requestData();
}
private void requestData() {
//3.
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
//4.创建请求
Request request = new Request.Builder().url(url_string).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
//10.
final String errorMessage = e.getMessage().toString();
//9.
runOnUiThread(new Runnable() {
@Override
public void run() {
//11.
Toast.makeText(MainActivity.this,errorMessage,Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//5.
String responseString = response.body().string();
//8.将数据在子线程中处理完毕后发送给主线程
Message message = handler.obtainMessage();
message.what = sove_data;
message.obj = responseString;
handler.sendMessage(message);
}
});
}
private void initView() {
rl_view = findViewById(R.id.rl_view);
//获取上下文
context = this;
}
}