fresco加载图片+retrofit网络请求+rxjava2+xrecyclerview下拉刷新上拉加载
来源:互联网 发布:彩蝶排课软件 编辑:程序博客网 时间:2024/05/20 07:16
compile 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'implementation 'com.google.code.gson:gson:2.8.2'compile 'com.facebook.fresco:fresco:0.11.0'compile 'com.facebook.fresco:imagepipeline-okhttp3:0.11.0'compile 'com.squareup.retrofit2:retrofit:2.3.0'compile'com.squareup.retrofit2:converter-gson:2.3.0'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.1.7'compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'compile 'com.jcodecraeer:xrecyclerview:1.3.2'------------------------------------------------------------------
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xrv" android:layout_width="match_parent" android:layout_height="match_parent" ></com.jcodecraeer.xrecyclerview.XRecyclerView></LinearLayout>
-----------------------------------------------------------------------------------------------------------
item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:orientation="vertical"> <TextView android:id="@+id/te" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:text="111111111111" /> <TextView android:id="@+id/te1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:text="22222222222222" /> </LinearLayout> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/sdv" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentRight="true" /></RelativeLayout>
-----------------------------------------------------------------------------------------------------------------------
Bean.java
自己根据接口封装
------------------------------------------------------------------------------------------------------
IInterface.java
import io.reactivex.Observable;import okhttp3.ResponseBody;import panjiangang.bwie.com.day7.bean.Bean;import retrofit2.Call;import retrofit2.http.GET;import retrofit2.http.Path;import retrofit2.http.Query;/** * Created by lenovo on 2017/12/04. */public interface IInterface { @GET("/nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10") Call<ResponseBody> get(); @GET("/nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10") Observable<Bean> get1();//@Path("user")String user @GET("/nba") Observable<Bean> get2(@Query("key") String user, @Query("num") int num);}
------------------------------------------------------------------------------------------------------------------------------------
MyAdapter.java
import android.content.Context;import android.net.Uri;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.facebook.drawee.generic.RoundingParams;import com.facebook.drawee.view.SimpleDraweeView;import panjiangang.bwie.com.day7.bean.Bean;/** * Created by lenovo on 2017/12/05. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.myholder> { //两个参数 上下文,和数据源 Context context; Bean bean; public MyAdapter(Context context, Bean bean) { this.context = context; this.bean = bean; } @Override public myholder onCreateViewHolder(ViewGroup parent, int viewType) { //加载布局返回到holder View view = View.inflate(context, R.layout.item, null); myholder myholder = new myholder(view); return myholder; } @Override public void onBindViewHolder(myholder holder, int position) { Uri uri = Uri.parse(bean.getNewslist().get(position).getPicUrl()); RoundingParams roundingParams = RoundingParams.fromCornersRadius(5f); roundingParams.setRoundAsCircle(true); holder.img.getHierarchy().setRoundingParams(roundingParams); holder.img.setImageURI(uri); //设置控件 属性 holder.te.setText(bean.getNewslist().get(position).getTitle()); holder.te1.setText(bean.getNewslist().get(position).getCtime()); } @Override public int getItemCount() { return bean.getNewslist() == null ? 0 : bean.getNewslist().size(); } class myholder extends RecyclerView.ViewHolder { SimpleDraweeView img; TextView te; TextView te1; public myholder(View itemView) { super(itemView); img = itemView.findViewById(R.id.sdv); te = itemView.findViewById(R.id.te); te1 = itemView.findViewById(R.id.te1); } }}---------------------------------------------------------------------------------------------------------------------------
MainActivity.java
import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.widget.Toast;import com.jcodecraeer.xrecyclerview.XRecyclerView;import butterknife.ButterKnife;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.functions.Consumer;import io.reactivex.schedulers.Schedulers;import *********.********.com.day7.bean.Bean;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity { private XRecyclerView mXrv; private int num = 10; Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); mXrv = (XRecyclerView) findViewById(R.id.xrv); LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this); mXrv.setLayoutManager(manager); zip1();//rxjava 与 retrofit网络请求结合 } private void zip1() { //http://api.tianapi.com/nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addConverterFactory(GsonConverterFactory.create()) // call 转化成 Observerable .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); IInterface iInterface = retrofit.create(IInterface.class); iInterface.get2("71e58b5b2f930eaf1f937407acde08fe", num) // 指定 被观察者 所在一个IO线程 .subscribeOn(Schedulers.io()) //指定观察者所在 主线程 .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Bean>() { @Override public void accept(Bean bean) throws Exception { //Toast.makeText(MainActivity.this, "111" + bean.getNewslist().get(0).getTitle(), Toast.LENGTH_SHORT).show(); System.out.println("bean = " + bean.toString()); final MyAdapter adapter = new MyAdapter(MainActivity.this, bean); mXrv.setAdapter(adapter); mXrv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() {// handler.postDelayed(new Runnable() {// @Override// public void run() { //刷新 num--; zip1(); Toast.makeText(MainActivity.this, "num = " + num, Toast.LENGTH_SHORT).show(); adapter.notifyDataSetChanged(); mXrv.refreshComplete();// }// }, 900); } @Override public void onLoadMore() {// handler.postDelayed(new Runnable() {// @Override// public void run() { //加载 num++; zip1(); Toast.makeText(MainActivity.this, "num = " + num, Toast.LENGTH_SHORT).show(); adapter.notifyDataSetChanged(); mXrv.loadMoreComplete();// }// }, 900); } }); } }); }}
------------------------------------------------------------------------------------------
MyApplication
import android.app.Application;import com.facebook.drawee.backends.pipeline.Fresco;/** * Created by lenovo on 2017/12/06. */public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); }}
----------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="****************"> <uses-permission android:name="android.permission.INTERNET" /> <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
阅读全文
0 0
- fresco加载图片+retrofit网络请求+rxjava2+xrecyclerview下拉刷新上拉加载
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- XRecyclerView下拉刷新和上拉加载
- XRecyclerView上拉刷新下拉加载
- XRecyclerView 上拉刷新、下拉加载
- XRecyclerView 上拉加载 下拉刷新
- XRecyclerView下拉刷新,上拉加载
- 使用XRecyclerview下拉刷新,上拉加载
- XRecyclerView的上拉加载,下拉刷新
- XRecyclerView+上拉加载下拉刷新+多条目加载
- XRecyclerView的多条目请求数据,可以实现上拉加载下拉刷新
- 支持下拉刷新上拉加载xrecyclerview的基本使用
- XRecyclerView 实现下拉刷新和上拉加载更多
- xRecyclerView简单实现下拉刷新和上拉加载
- xRecyclerView简单实现下拉刷新和上拉加载
- Xrecyclerview的使用(上拉刷新,下拉加载)
- Android XRecyclerView简单实现上拉刷新,下拉加载
- XRecyclerView的下拉刷新上拉加载功能
- 查看表空间使用情况
- JUC教程
- nginx FastCGI错误Primary script unknown解决办法(访问php提示"File not found.)
- C# 通过exchange发送邮件 defaultuser and use username_password
- 十张思维导图掌握javascript重点
- fresco加载图片+retrofit网络请求+rxjava2+xrecyclerview下拉刷新上拉加载
- 数据结构-查找-顺序查找(1)时间复杂度(n+1)/2
- VS2015 C# System.Data.SQLite
- Android 之路12---Java基础7
- 【iOS】自定义CALayer可能会出现没有动画过程但有动画结果的解析
- CUDA
- 改变viewPager滑动的速度,利用反射完美实现
- layui获取选中行数据
- 递归算法及经典例子实现