MVP+OKHTTP+Fresco+RecyclerView+EventBus实现点击传值

用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值