MVP实现RecyclerView
来源:互联网 发布:sql语句编写 编辑:程序博客网 时间:2024/06/06 00:11
接口类
package com.bwie.month.contract;import com.bwie.month.model.RecyModel;public class RecyContract { //View接口 public interface IRecyView { public void setView(String s); } //Model接口 public interface IRecyModel { public void getData(RecyModel.CCC ccc); } //PreSenter接口 public interface IRecyPresenter { public void getData(); }}
Model
package com.bwie.month.model;import android.content.Context;import android.util.Log;import com.bwie.month.contract.RecyContract;import com.bwie.month.okhttputils.OkHttpUtils;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public class RecyModel implements RecyContract.IRecyModel { Context context; public RecyModel(Context context) { this.context = context; } private String s; @Override public void getData(final CCC ccc) { OkHttpUtils.getInstance().doGet("http://news-at.zhihu.com/api/4/themes", new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("Tag", "出错啦"); } @Override public void onResponse(Call call, Response response) throws IOException { ccc.getDataS(response.body().string()); } }); } public interface CCC{ void getDataS(String s); }}
PreSenter
import android.content.Context;import com.bwie.month.contract.RecyContract;import com.bwie.month.model.RecyModel;public class RecyPresenter implements RecyContract.IRecyPresenter { Context context; RecyModel model; RecyContract.IRecyView view; private String s; public RecyPresenter(Context context, RecyContract.IRecyView view) { this.context = context; this.view = view; model = new RecyModel(context); } @Override public void getData() { model.getData(new RecyModel.CCC() { @Override public void getDataS(String s) { view.setView(s); } }); }}
主代码
package com.bwie.month.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bwie.month.R;import com.bwie.month.adapter.MyRecyclerViewTwoAdapter;import com.bwie.month.bean.ThemeBean;import com.bwie.month.contract.RecyContract;import com.bwie.month.presenter.RecyPresenter;import java.util.List;public class Fragment_theme extends Fragment implements RecyContract.IRecyView { private RecyclerView rv; private Listlist; private MyRecyclerViewTwoAdapter adapter; private RecyPresenter presenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getActivity(), R.layout.frag_theme, null); initView(view); return view; } private void initView(View view) { rv = (RecyclerView) view.findViewById(R.id.fg_theme_rv); presenter = new RecyPresenter(getActivity(), this); presenter.getData();// new Thread() {// @Override// public void run() {// super.run();////// }// }.start(); } @Override public void setView(String s) { System.out.println("=======>"+s); final ThemeBean bean = ThemeBean.objectFromData(s); if (bean != null) { Log.e("TAG","Bean不为空"); getActivity().runOnUiThread(new Runnable() { @Override public void run() { list = bean.getOthers(); rv.setLayoutManager(new GridLayoutManager(getActivity(), 2)); adapter = new MyRecyclerViewTwoAdapter(getActivity(), list); rv.setAdapter(adapter); } }); }else{ Log.e("TAG","Bean为空"); } }}
适配器
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.LinearLayout;import android.widget.RelativeLayout;import android.widget.TextView;import com.bwie.month.R;import com.bwie.month.bean.ThemeBean;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.util.ArrayList;import java.util.List;public class MyRecyclerViewTwoAdapter extends RecyclerView.Adapter{ int TYPT_ONE = 1; int TYPT_TWO = 2; Context context; List list = new ArrayList<>(); private final ImageLoader loader; public MyRecyclerViewTwoAdapter(Context context, List list) { this.context = context; this.list = list; ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(context); loader = ImageLoader.getInstance(); loader.init(configuration); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType==TYPT_ONE){ View view = View.inflate(context, R.layout.rv_item_one, null); ViewHolderOne holder = new ViewHolderOne(view); return holder; }else if(viewType==TYPT_TWO){ View view = View.inflate(context, R.layout.rv_item_two, null); ViewHolderTwo holder = new ViewHolderTwo(view); return holder; } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if(holder instanceof ViewHolderOne){ ((ViewHolderOne) holder).tv.setText(list.get(position).getName()); loader.displayImage(list.get(position).getThumbnail(),((ViewHolderOne) holder).iv); }else if(holder instanceof ViewHolderTwo){ ((ViewHolderTwo) holder).tv.setText(list.get(position).getName()); loader.displayImage(list.get(position).getThumbnail(),((ViewHolderTwo) holder).iv); } } @Override public int getItemCount() { return list.size(); } @Override public int getItemViewType(int position) { if (position % 2 == 0) { return TYPT_ONE; } return TYPT_TWO; } class ViewHolderOne extends RecyclerView.ViewHolder{ View view; RelativeLayout rl; ImageView iv; TextView tv; public ViewHolderOne(View view) { super(view); this.view = view; rl = view.findViewById(R.id.item_one); iv = view.findViewById(R.id.item_one_iv); tv = view.findViewById(R.id.item_one_tv); } } class ViewHolderTwo extends RecyclerView.ViewHolder{ View view; ImageView iv; TextView tv; LinearLayout ll; public ViewHolderTwo(View view) { super(view); this.view = view; ll = view.findViewById(R.id.item_two); iv = view.findViewById(R.id.item_two_iv); tv = view.findViewById(R.id.item_two_tv); } }}
阅读全文
0 0
- MVP实现RecyclerView
- recyclerView+MVP实现瀑布流
- 使用MVP来实现recyclerview数据
- MVP简单实现OKHttp+recyclerview+springview
- MVP+Retrofit+RecyclerView实现加载网络数据
- RxJava2+MVP+Retrofit框架简单实现RecyclerView
- MvP+recyclerview
- Mvp+RecyclerView
- MVP+RecyclerView
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- MVP实现RecyclerView上拉刷新,下拉加载
- MVP+OKHTTP+Fresco+RecyclerView+EventBus实现点击传值
- mvp+Recyclerview+okhttp+Springview
- mvp+okhttp+recyclerview
- mvp,okhttp,recyclerview
- okhttp+MVP+RecyclerView
- RecyclerView+MVP+OKhttp
- okHttp+Mvp+RecyclerView
- 回文数判断
- struts2的OGNL表达式
- Tomcat集群配置笔记
- Linux之redhat通过脚本文件创建对照并重置虚拟机
- 递归入门
- MVP实现RecyclerView
- 012-题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- SQL笔记
- VS 2013密匙
- Stack类模板
- HDU
- 4590: [Shoi2015]自动刷题机
- Android surfaceflinger (4) -Vsync产生上报流程
- JVM内幕:Java虚拟机详解