导入依赖:compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.google.code.gson:gson:2.8.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
网络权限:<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
/**
* 网络拦截器
*/
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;
}
}
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 java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
String path = "http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0 ";
List<Bean.SongListBean> list = new ArrayList<>();
private RecyclerView recyclerview;
Handler handle = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//网络数据解析
initdata();
}
//okhttp网络解析
private void initdata() {
//实例化
//拦截器
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor((Interceptor) new LoggingInterceptor()).build();
Request request = new Request.Builder()
.url(path)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
Bean bean;
bean = Bean.objectFromData(result);
list = bean.song_list;
handle.post(new Runnable() {
@Override
public void run() {
//适配器
recyclerview.setAdapter(new MyAdapter(MainActivity.this,list));
}
});
}
});
}
//初始化数据
private void initView() {
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
//布局管理器
LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerview.setLayoutManager(manager);
}
}
import android.content.Context;
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.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
Context context;
List<Bean.SongListBean> list = new ArrayList<>();
ImageLoader loader;
DisplayImageOptions options;
public MyAdapter(Context context, List<Bean.SongListBean> list) {
this.context = context;
this.list = list;
loader = ImageLoader.getInstance();
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(context);
loader.init(configuration);
options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.displayer(new FadeInBitmapDisplayer(20))
.build();
}
public void onRefresh() {
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context,R.layout.item,null);
return new MyAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.tv1.setText(list.get(position).getTitle());
holder.tv2.setText(list.get(position).getArtist_name());
loader.displayImage(list.get(position).getPic_big(),holder.img,options);
}
@Override
public int getItemCount() {
return list==null ? 0 :list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView img;
TextView tv1,tv2;
public ViewHolder(View itemView) {
super(itemView);
img = itemView.findViewById(R.id.img);
tv1 = itemView.findViewById(R.id.tv1);
tv2 = itemView.findViewById(R.id.tv2);
}
}
}