recyclerview + OKHttp3 + 拦截器
2017-10-17 10:10
148 查看
recyclerview + OKHttp3 + 拦截器
1.首先添加依赖
okhttp依赖:
recyclerview依赖:
Gson依赖:
2.布局文件里写控件
3.mainActivity类:
1.首先添加依赖
okhttp依赖:
compile 'com.squareup.okhttp3:okhttp:3.9.0'
recyclerview依赖:
compile 'com.android.support:recyclerview-v7:26.0.+'
Gson依赖:
compile 'com.google.code.gson:gson:2.8.1'、 权限:
<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"/>
2.布局文件里写控件
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_below="@+id/tv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"></android.support.v7.widget.RecyclerView>item布局:
<ImageView android:scaleType="fitXY" android:padding="10dp" android:id="@+id/img" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv1" android:padding="10dp" android:text="成都" android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv2" android:padding="10dp" android:textSize="20sp" android:text="赵振_无法长大" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
3.mainActivity类:
public class MainActivity extends AppCompatActivity { //"http://bz.budejie.com/?typeid=2&ver=3.4.3&no_cry=1&client=android&c=wallPaper&a=random&bigid=0" 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(); ViewPager vp; List<ImageView>imgs; int[] arr = {R.drawable.a1,R.drawable.a2}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initView(); //网络数据解析 initdata(); initData(); MyPagerAdapter adapter = new MyPagerAdapter(); vp.setAdapter(adapter); } class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { return imgs.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view ==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { int index = position % imgs.size(); container.addView(imgs.get(index)); return imgs.get(index); } } //viewpager初始化数据 private void initData() { imgs = new ArrayList<>(); for (int i = 0;i<arr.length;i++){ ImageView iv = new ImageView(this); iv.setScaleType(ImageView.ScaleType.FIT_XY); iv.setImageResource(arr[i]); imgs.add(iv); } } //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.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); vp = (ViewPager) findViewById(R.id.vp); //布局管理器 LinearLayoutManager manager = new LinearLayoutManager(this); recyclerview.setLayoutManager(manager); } }4.Adapter适配器:
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).album_title); holder.tv2.setText(list.get(position).artist_name); loader.displayImage(list.get(position).pic_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); } } }
相关文章推荐
- 使用MVP注册登录模块+封装的OKhttp,拦截器+QQ第三方登录+RecyclerView+SpringView上拉加载下拉刷新网络数据
- Android使用OKHTTP网络框架请求数据,RecyclerView结合Glide展示图片,瀑布流布局样式
- MVP+OkHttp+RecyclerView+BaseActivity
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- recyclerview+okhttp+glide实现网络请求加载图片列表
- 使用recyclerview多条目加载代替listview okhttp请求网路 Glide加载图片
- OkHttp+Banner+RecyclerView
- Android---------通过OkHttp网络请求利用RecyclerView展示数据
- MVP简单实现OKHttp+recyclerview+springview
- OkHttp3请求数据,用Recyclerview展示数据
- 单列模式,RecyclerView适配器封装,BroadcastReceiver介绍,Mvp+Retrofit+rxjava+okhttp框架的梳理总结
- mvp+okhttp+recyclerview
- RecyclerView+OkHttp加载刷新
- MVP架构分包+OkHttp网络请求+RecyclerView展示数据
- RecyclerView+OKhttp+item的条目加载
- 购物车页面实现 :Okhttp+mvp+RecyclerView(更新)
- RecyclerView和okhttp结合 实现一个网络请求数据
- Android——MVP架构OkHttp的二次封装以及RecyclerView的使用
- Mvp+RecyclerView+Okhttp
- 拦截器——okhttp(post)+recyclerView显示数据