MVP+OKHTTP+Fresco+RecyclerView+EventBus实现点击传值
来源:互联网 发布:女装淘宝店铺起名字 编辑:程序博客网 时间:2024/06/06 19:10
用MVP+OKHTTP+Fresco+RecyclerView+EventBus等功能实现,点击条目时进行传值,并且显示出来
首先看一下依赖
compile 'com.jakewharton:butterknife:8.8.1' compile 'com.jakewharton:butterknife-compiler:8.8.1' compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.facebook.fresco:fresco:0.11.0' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okio:okio:1.13.0' implementation 'com.google.code.gson:gson:2.2.4' compile 'org.greenrobot:eventbus:3.0.0' annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.0.1'
View层
public interface IShowView { public void showData(); public void showRefresh(List<DataBean.DatasBean.GoodsCommendListBean> list);}
MODEL层
public interface IGetModel { public void LoadData(Callback callback);}public class GetModel implements IGetModel{ @Override public void LoadData(Callback callback) { OkHttpUtils.getInstance().doGet("http://169.254.194.209/mobile/index.php?act=goods&op=goods_detail&goods_id=100009",callback); }}
PRESENTER层
public class DataPresenter { GetModel model; IShowView view; DataBean bean; List<DataBean.DatasBean.GoodsCommendListBean> list=new ArrayList<>(); public DataPresenter(IShowView view) { this.view = view; this.model=new GetModel(); } public void DPshowData(){ model.LoadData(new OnUiCallback() { @Override public void onFailed(Call call, IOException e) { } @Override public void onSuccess(String result) throws IOException { Gson gson=new Gson(); bean=gson.fromJson(result,DataBean.class); Log.i("+++++++++", "onSuccess: "+bean.getDatas().getGoods_commend_list().toString()); list.addAll(bean.getDatas().getGoods_commend_list()); view.showRefresh(list); } }); }}
第一个Activity
public class MainActivity extends AppCompatActivity implements IShowView { private RecyclerView mRv; List<DataBean.DatasBean.GoodsCommendListBean> list; DataPresenter presenter; MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); presenter=new DataPresenter(this); showData(); presenter.DPshowData(); } @Override public void showData() { LinearLayoutManager manager = new LinearLayoutManager(this); adapter=new MyAdapter(this,list); mRv.setLayoutManager(manager); mRv.setAdapter(adapter); } @Override public void showRefresh(List<DataBean.DatasBean.GoodsCommendListBean> list) { adapter.setRefresh(list); } private void initView() { mRv = (RecyclerView) findViewById(R.id.rv); }}
适配器
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ Context context; List<DataBean.DatasBean.GoodsCommendListBean> list; OnItemClickListener listener; public interface OnItemClickListener{ public void OnItemClick(View view,int position,String pc,String name); } public void setOnItemClick(OnItemClickListener listener){ this.listener=listener; } public MyAdapter(Context context,List<DataBean.DatasBean.GoodsCommendListBean> list) { this.context = context; this.list=list; } public void setRefresh(List<DataBean.DatasBean.GoodsCommendListBean> list){ this.list=list; notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,R.layout.recy_item,null); return new MyViewHolder(view); } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { ((MyViewHolder)holder).sdv.setImageURI(list.get(position).getGoods_image_url()); ((MyViewHolder)holder).tv.setText(list.get(position).getGoods_name()+" ¥"+list.get(position).getGoods_promotion_price()); final String pc=list.get(position).getGoods_image_url(); final String name=list.get(position).getGoods_name(); final String price=list.get(position).getGoods_promotion_price(); // 条目的点击事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //实例化Message对象将数据发送出去然后进行跳转 Message message = new Message(pc,name,price); EventBus.getDefault().postSticky(message); Intent intent = new Intent(context,Main2Activity.class); context.startActivity(intent); } }); } @Override public int getItemCount() { return list!=null?list.size():0; } class MyViewHolder extends RecyclerView.ViewHolder{ SimpleDraweeView sdv; TextView tv; public MyViewHolder(View itemView) { super(itemView); sdv=itemView.findViewById(R.id.sdv); tv=itemView.findViewById(R.id.tv); } }}
第二个Activity
public class Main2Activity extends AppCompatActivity { private TextView mTv; private SimpleDraweeView mSdv; String pc; String name; String price; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); EventBus.getDefault().register(this); mSdv = (SimpleDraweeView) findViewById(R.id.sdv); mTv = (TextView) findViewById(R.id.tv); //接收数据并将数据显示出来 mTv.setText(name+"\r\n"+"价格:¥"+price); mSdv.setImageURI(pc); } //注解 @Subscribe(sticky = true) public void EventMessage(Message message){ name=message.getName(); pc=message.getPc(); price=message.getPrice(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }}
存储信息的类
public class Message { String pc; String name; String price; public Message(String pc, String name, String price) { this.pc = pc; this.name = name; this.price = price; } public String getPc() { return pc; } public void setPc(String pc) { this.pc = pc; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } @Override public String toString() { return "Message{" + "pc='" + pc + '\'' + ", name='" + name + '\'' + ", price='" + price + '\'' + '}'; }}
阅读全文
0 0
- MVP+OKHTTP+Fresco+RecyclerView+EventBus实现点击传值
- 展示数据使用:recyclerview,retrofit,greendao,butterknife,eventbus,fresco。实现效果图列表。MVP模式。
- Fresco图片加载+Eventbus跳转传值+Retrofit请求数据+GreenDao操作数据+Mvp分层+RecyclerView展示数据+ButtonKnife生成控件
- Fresco+RecyclerView+OkHttp+ButterKnife传值+条目点击跳转
- MVP简单实现OKHttp+recyclerview+springview
- MVP+Retrofit+fresco+greendao+eventbus
- OKhttp,MVP,RecyclerView,联合使用,点击条目进入详情页
- GreenDao--retrofit--fresco--eventbus--recyclerview
- MVP+Fresco+OKhttp+Retrofit+Recycleview
- mvp+Recyclerview+okhttp+Springview
- mvp+okhttp+recyclerview
- mvp,okhttp,recyclerview
- okhttp+MVP+RecyclerView
- RecyclerView+MVP+OKhttp
- okHttp+Mvp+RecyclerView
- Mvp+RecyclerView+Okhttp
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- MVP+Retrofit+RxJava+fresco+RecyclerView
- 大型网站技术架构(四)——网站的高性能架构
- Ubuntu 16.04,双显卡,GTX1060,安装 NVIDIA 显卡驱动
- iis运行网站项目无法加载或初始化请求的服务提供程序
- KM
- Java IO流分析整理
- MVP+OKHTTP+Fresco+RecyclerView+EventBus实现点击传值
- 学习《凸优化》笔记,基本摘抄自斯坦佛版凸优化教程(三)
- 一篇全面介绍Java注解的文章(转自codekongs博客)
- 【BDTC 2017讲师专访】张伟博士:阿里巴巴百亿级别的三元组知识图谱掌舵者
- windows下Python、pip、pyspider的安装,构建爬虫环境(二)
- 多线程-单例下线程安全验证
- 使用GNURadio和RTL-SDR搭建FM广播接收机
- 安卓相关的开源项目和控件网址
- 数据结构之双链表