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