MVP+Fresco+Retrofit实现的一个简单的适配器类
来源:互联网 发布:跟矮个子女生啪啪知乎 编辑:程序博客网 时间:2024/05/21 10:27
初始化一个接口
public class Api { public static final String BASE_PATH = "https://api.tianapi.com";}
初始化Fresco的
public class MyApp extends Application{ public static Context context; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); context=this; }}
创建一个Retrofit接口以便于用来网络连接用
public interface Services { /** * 结合Retrofit+RxJava * http://service.meiyinkeqiu.com/service/ads/cptj * @param * @return */ @GET("/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10") Observable<Homes> getJson();}
创建一个适配器来进行布局加载数据
public class Myadapter extends RecyclerView.Adapter<Myadapter.MyHolder> { List<Homes.NewslistBean> newslistBeen; Context context; SimpleDraweeView image; public Myadapter(Context context, List<Homes.NewslistBean> newslistBeen) { this.context = context; this.newslistBeen = newslistBeen; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyHolder holder = new MyHolder(LayoutInflater.from(context).inflate(R.layout.item_home, parent, false)); return holder; } @Override public void onBindViewHolder(MyHolder holder, int position) { holder.textView.setText(newslistBeen.get(position).getTitle()); Uri uri = Uri.parse(newslistBeen.get(position).getPicUrl()); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoPlayAnimations(true) .build(); image.setController(controller); } @Override public int getItemCount() { return newslistBeen.size(); } class MyHolder extends RecyclerView.ViewHolder { TextView textView; public MyHolder(View itemView) { super(itemView); image = itemView.findViewById(R.id.image); textView = itemView.findViewById(R.id.text); } }
创建一个Adaper 的model的接口
public interface Imodel { void getAdapter();}
在实现model类里面进行网络请求等操作
public class Mymodel implements Imodel{ private DataOverListener mDataOverListener; @Override public void getAdapter() { Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_PATH).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build(); Services services = retrofit.create(Services.class); Observable<Homes> observable = services.getJson(); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Homes>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Homes myBean) { Myadapter myadapter = new Myadapter(MyApp.context, myBean.getNewslist()); mDataOverListener.dataOver(myadapter); } }); } public interface DataOverListener{ void dataOver(Myadapter myadapter); } public void setmDataOverListener(DataOverListener mDataOverListener) { this.mDataOverListener = mDataOverListener; }}
在presenter里面进行一些简单的连接View 和 model操作
public class MyPresenter { Mymodel imodel; Iview iview; public MyPresenter(Iview iview) { this.iview = iview; this.imodel = new Mymodel(); } public void start(){ imodel.getAdapter(); imodel.setmDataOverListener(new Mymodel.DataOverListener() { @Override public void dataOver(Myadapter myadapter) { iview.adapter(myadapter); } }); }}
创建一个View的接口
public interface Iview { void adapter(Myadapter myadapter);}下面这个就是mainactivity里面进行的一些操作public class MainActivity extends AppCompatActivity implements Iview{ RecyclerView recyclerView; MyPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recycler); presenter = new MyPresenter(MainActivity.this); presenter.start(); } @Override public void adapter(Myadapter myadapter) { recyclerView.setLayoutManager(new GridLayoutManager(MyApp.context,2)); recyclerView.setAdapter(myadapter); }}
还有下面要用到的一些依赖什么的
compile 'com.android.support:appcompat-v7:23.4.0'compile 'com.facebook.fresco:fresco:0.11.0'compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.android.support:mediarouter-v7:25.0.0'compile 'com.android.support:appcompat-v7:25.0.0'compile 'com.android.support:recyclerview-v7:25.0.0'子布局
<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/image" android:layout_width="200dp" android:layout_height="200dp" /><TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" />
阅读全文
0 0
- MVP+Fresco+Retrofit实现的一个简单的适配器类
- MVP+RXJAVA+Retrofit+Fresco实现简单的效果
- Mvp+Rxandroid+Retrofit的简单实现
- 及其简单的Rxjava+Retrofit+Fresco+ok,mvp小Dome解析数据
- 一个简单可复用的MVP+RxJava+Retrofit例子
- 简单fresco的实现
- Retrofit+RxJava+Fresco+MVP
- Retrofit+RxJava+Fresco+MVP
- 简单的mvp+retrofit+rxjava示例
- RXJava+Retrofit+MVP的简单封装
- 简单实用的mvp+retrofit+rxjava+dagger2
- MVP+retrofit+rxjava+Knife的简单使用
- MVP&Retrofit&Rxjava&Gson的简单例子
- 简单的mvp+retrofit+rxjava示例
- Android MVP+RxJava+Retrofit 的简单模型
- fresco适配器的使用
- Android--MVP+Retrofit+Rxjava的实现
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- POJ
- 欢迎使用CSDN-markdown编辑器
- C++ 静态联编与动态联编
- 初窥Linux 之 我最常用的20条命令
- Intellij IDEA使用junit单元测试及其junit与spring版本不兼容问题
- MVP+Fresco+Retrofit实现的一个简单的适配器类
- markdown书写数学公式
- Windows C语言 Socket编程 client端(客户端)--断线重连版
- AdvancedInstaller打包工具使用(七)
- jdk下载
- TensorFlow 教程
- 大数据(三十)HBASE【Hbase 环境安装 -- 完全分布式安装】
- 批量插入数据 C# SqlBulkCopy使用
- VS2017常用快快捷键