compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
android:name=".MyApplication"
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recylerview"
></android.support.v7.widget.RecyclerView>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/img"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_margin="10dp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="aaaaa" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="aaaa" />
</LinearLayout>
</LinearLayout>
package com.bawei.okhttpdome;
import android.os.Build;
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
/**
* 网络拦截器
*/
public class LoggingInterceptor implements Interceptor {
private static final String UA = "User-Agent";
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.addHeader(UA, makeUA())
.build();
return chain.proceed(request);
}
private String makeUA() {
String s = Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE;
return Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE;
}
}
package com.bawei.okhttpdome;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private RecyclerView recylerview;
private RecylerAdapter recyleradapter;
private List<Bean.SongListBean> list;
private Handler handler=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler = new Handler();
recylerview = (RecyclerView) findViewById(R.id.recylerview);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
linearLayoutManager.setOrientation(linearLayoutManager.VERTICAL);
recylerview.setLayoutManager(linearLayoutManager);
getData("http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0");
}
private void getData(String url) {
Request build = new Request.Builder().url(url).build();
MyApplication.getOkHttpClient().newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String result = response.body().string();
Gson gson = new Gson();
Bean bean = gson.fromJson(result, Bean.class);
list = bean.getSong_list();
runOnUiThread(new Runnable() {
@Override
public void run() {
recyleradapter = new RecylerAdapter(list, MainActivity.this);
recylerview.setAdapter(recyleradapter);
}
});
}
}
});
}
}
package com.bawei.okhttpdome;
import android.app.Application;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
public class MyApplication extends Application {
private static OkHttpClient okHttpClient;
@Override
public void onCreate() {
super.onCreate();
boolean Debug = true;
okHttpClient = new OkHttpClient();
okHttpClient = okHttpClient
.newBuilder()
//调用拦截器方法
.addInterceptor(new LoggingInterceptor())
.connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.build();
}
public static OkHttpClient getOkHttpClient() {
return okHttpClient;
}
}
package com.bawei.okhttpdome;
import android.content.Context;
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 java.util.List;
public class RecylerAdapter extends RecyclerView.Adapter<RecylerAdapter.MyViewHolder>{
private List<Bean.SongListBean> list;
Context context;
public RecylerAdapter(List<Bean.SongListBean> list, Context context) {
this.list =list;
this.context = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.title.setText(list.get(position).getTitle());
holder.name.setText(list.get(position).getAuthor());
final String imag=list.get(position).getPic_big();
Glide.with(context)
.load(imag)
.into(holder.imge);
}
@Override
public int getItemCount() {
return list.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
private final ImageView imge;
private final TextView title;
private final TextView name;
public MyViewHolder(View itemView) {
super(itemView);
imge = (ImageView) itemView.findViewById(R.id.img);
title = (TextView) itemView.findViewById(R.id.title);
name = (TextView) itemView.findViewById(R.id.name);
}
}
}
//自己添加bean类