普通MVP+XRexyclerview+RxJava+Retrofit+Fresco
来源:互联网 发布:iphone无缝拼图软件 编辑:程序博客网 时间:2024/06/04 19:44
build.gradle
apply plugin: 'com.android.application'android { compileSdkVersion 26 defaultConfig { applicationId "com.example.adminjs.mamm" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.facebook.fresco:fresco:1.5.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile "io.reactivex.rxjava2:rxjava:2.1.1" compile 'io.reactivex.rxjava2:rxandroid:2.0.1' // implementation 'com.android.support:recyclerview-v7:26.1.0' compile 'com.jcodecraeer:xrecyclerview:1.3.2'}
清单列表
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.adminjs.mamm"><uses-permission android:name="android.permission.INTERNET"/> <application android:name=".MyApp" 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>
M层
public class MoldelImpl { public void getData(final ModelCallBack callBack){ Map<String, String> map = new HashMap<>(); map.put("key","71e58b5b2f930eaf1f937407acde08fe"); map.put("num","10"); MyApp.inters.get(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Bean>() { @Override public void accept(Bean bean) throws Exception { callBack.success(bean); } }); } public interface ModelCallBack { public void success(Bean bean); }}
V层
public interface MaView { public void success(Bean bean); public void failure();}
P层
public class MainPresenter{ private MaView view; private MoldelImpl moldel; public MainPresenter(MaView view) { this.view = view; this.moldel = new MoldelImpl(); } public void get(){ moldel.getData(new MoldelImpl.ModelCallBack() { @Override public void success(Bean bean) { if(view != null){ view.success(bean); } } }); }}
拼接
public interface Inters { @GET("/nba") Observable<Bean> get(@QueryMap Map<String, String> map);}
初始化
public class MyApp extends Application{ public static Inters inters; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); inters = retrofit.create(Inters.class); }}
适配器
public class MyAdapter extends XRecyclerView.Adapter<MyAdapter.IViewholder> { private Context context; private List<Bean.NewslistBean>list; public MyAdapter(Context context) { this.context = context; } public void addData(Bean bean){ if(list == null){ list = new ArrayList<>(); } list.addAll(bean.getNewslist()); notifyDataSetChanged(); } @Override public IViewholder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.item_layout, null); return new IViewholder(view); } @Override public void onBindViewHolder(IViewholder holder, int position) { holder.simpleDraweeView.setImageURI(list.get(position).getPicUrl()); holder.textView.setText(list.get(position).getTitle()); RoundingParams roundingParams = RoundingParams.fromCornersRadius(5f); roundingParams.setRoundAsCircle(true); holder.simpleDraweeView.getHierarchy().setRoundingParams(roundingParams); } @Override public int getItemCount() { return list == null ? 0 : list.size(); } class IViewholder extends XRecyclerView.ViewHolder{ SimpleDraweeView simpleDraweeView; TextView textView; public IViewholder(View itemView) { super(itemView); simpleDraweeView = itemView.findViewById(R.id.simpledra); textView = itemView.findViewById(R.id.text); } }}
MainActivity
public class MainActivity extends Activity implements MaView{ private XRecyclerView xr; private MainPresenter presenter; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xr = findViewById(R.id.xrecyclerview); presenter = new MainPresenter(this); presenter.get(); LinearLayoutManager manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); xr.setLayoutManager(manager); adapter = new MyAdapter(MainActivity.this); xr.setAdapter(adapter); xr.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { Toast.makeText(MainActivity.this,"已经是最新的啦!",Toast.LENGTH_SHORT).show(); xr.refreshComplete(); } @Override public void onLoadMore() { xr.loadMoreComplete(); } }); } @Override public void success(Bean bean) { adapter.addData(bean); // Toast.makeText(MainActivity.this,bean.toString(),Toast.LENGTH_SHORT).show(); } @Override public void failure() { } }
[源码]https://github.com/jisheng6/Mamm
阅读全文
0 0
- 普通MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+XRexyclerview+RxJava+Retrofit+Fresco
- Retrofit+RxJava+Fresco+MVP
- Retrofit+RxJava+Fresco+MVP
- MVP+Retrofit+RxJava+fresco+RecyclerView
- MVP模式(Rxjava+retrofit+fresco)
- MVP+Fresco+RXJava+Retrofit+全选+反选
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- MVP+RxJava+Retrofit+Fresco+屏幕适配
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- MVP+ Retrofit+RxJava+XRecyclerView+TabLayout+Fresco结合使用
- MVP+Retrofit+Rxjava+ButterKnife+Fresco+Recyclerview+GreenDao+泛型+完整Demo
- MVP+RXJAVA+Retrofit+Fresco实现简单的效果
- MVP+Fresco+RxJava
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Fresco+Rxjava
- 二进制颜色代码大全
- Xcode编译 library not found for -lXXXX
- JSON转对象 对象转JSON JSONArray
- String.intern()的使用
- 题目:使用VS2015与VS2013 创建C++动态链接库并调用
- 普通MVP+XRexyclerview+RxJava+Retrofit+Fresco
- sas数据集或报表输出excel
- Windows 查看端口占用并KILL掉相应进程
- php三级联动+无限分类+树形菜单
- 基于redis的分布式锁
- java中的匿名内部类总结
- Java--编程语言的常青树
- 资源
- 在CentOS7.4中使用Vsftpd搭建FTP服务器