Retrofit和MVP的结合使用

APIService
public interface MyApiService {
@GET
Observable get(@Url String url, @QueryMap Map<String,String> map);
@POST
Observable post(@Url String url,@QueryMap Map<String,String> map);
}
//总接口类的使用
public class Contacts {
//总接口前缀
public static final String BASE_URL = “http://www.zhaoapi.cn/”;
//登陆
public static final String USER_LOGIN = “product/searchProducts”;
//用户信息
public static final String USER_INFO = “user/getUserInfo”;
//上传图片
public static final String UP_LOAD_IMAGE = “file/upload”;
}

Model接口的创建
public interface Model {
void Request(String url, Map<String,String> map, Class cla, MyCallBack myCallBack);
}
//适配器
package com.example.retrofit.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.retrofit.R;
import com.example.retrofit.bean.MyData;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.ArrayList;
import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewholder> implements View.OnClickListener{
private Context context;
private List<MyData.DataBean> Mdata;

public MyAdapter(Context context, List<MyData.DataBean> mdata) {
    this.context = context;
    Mdata = mdata;
}

public void setMdata(List<MyData.DataBean> mdata) {
    Mdata = mdata;
    notifyDataSetChanged();
}

@NonNull
@Override
public MyViewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(context).inflate(R.layout.mytitle, null);
    MyViewholder viewholder = new MyViewholder(view);
    view.setOnClickListener(this);
    view.setTag(i);
    return viewholder;
}

@Override
public void onBindViewHolder(@NonNull MyViewholder myViewholder, int i) {
    MyData.DataBean dataBean = Mdata.get(i);
    String s = dataBean.getImages();
    String[] split = s.split("\\|");
    String s1 = split[0];

    myViewholder.title.setText(dataBean.getTitle());
    myViewholder.img.setImageURI(s1);
}

@Override
public int getItemCount() {
    return Mdata.size();
}

@Override
public void onClick(View v) {
    itemClick.setItemClick(v,(int)v.getTag());
}

public class MyViewholder extends RecyclerView.ViewHolder{

    private SimpleDraweeView img;
    private TextView title;

    public MyViewholder(@NonNull View itemView) {
        super(itemView);
         img = itemView.findViewById(R.id.img);
         title = itemView.findViewById(R.id.title);
    }
}

//设置点击事件
public interface ItemClick{
    void setItemClick(View v,int i);
}
private ItemClick itemClick;

public void setItemClick(ItemClick itemClick) {
    this.itemClick = itemClick;
}

}
MainActivity的使用
package com.example.retrofit;

import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.ArrayMap;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.retrofit.adapter.MyAdapter;
import com.example.retrofit.bean.MyData;
import com.example.retrofit.presenter.ImPresenter;
import com.example.retrofit.view.MyView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements MyView,View.OnClickListener{

private List<MyData.DataBean> Mdata=new ArrayList<>();
private Boolean zonghe_bol=false;
private Boolean xiaoliang_bol=false;
private Boolean jiage_bol=false;
@BindView(R.id.recy)
RecyclerView recy;
@BindView(R.id.qiehuan)
TextView qiehuan;
@BindView(R.id.zonghe)
TextView zonghe;
@BindView(R.id.xiaoliang)
TextView xiaoliang;
@BindView(R.id.jiage)
TextView jiage;
private MyAdapter myAdapter;
private ImPresenter imPresenter;
private Map<String, String> map;
private List<MyData.DataBean> mdata=new ArrayList<>();
private int pd=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    qiehuan.setOnClickListener(this);
    zonghe.setOnClickListener(this);
    jiage.setOnClickListener(this);
    xiaoliang.setOnClickListener(this);
    LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
    recy.setLayoutManager(linearLayoutManager);

    myAdapter = new MyAdapter(this, Mdata);
    recy.setAdapter(myAdapter);

    map = new HashMap<>();
    map.put("keywords","手机");
    map.put("page","1");

    imPresenter = new ImPresenter(this);
    imPresenter.requestData(Contacts.USER_LOGIN,map,MyData.class);

    myAdapter.setItemClick(new MyAdapter.ItemClick() {
        @Override
        public void setItemClick(View v, int i) {

            Intent intent = new Intent(MainActivity.this, Main2Activity.class);
            intent.putExtra("id",mdata.get(i).getPid()+"");
            startActivity(intent);

        }
    });


}

@Override
public void Success(T data) {
   MyData data1 = (MyData) data;
   mdata.addAll(data1.getData());
   myAdapter.setMdata(mdata);
}

@Override
public void Error(T error) {

}

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onClick(View v) {

    switch (v.getId()){
        case R.id.zonghe:
            zonghe_change();
            mdata.clear();
            imPresenter.requestData(Contacts.USER_LOGIN,map,MyData.class);
            break;
        case R.id.qiehuan:
            if(pd==0){
               pd=1;
                qiehuan.setBackground(getResources().getDrawable(R.drawable.grid));
               GridLayoutManager gridLayoutManager=new GridLayoutManager(this,2);
                recy.setLayoutManager(gridLayoutManager);
                myAdapter = new MyAdapter(this, Mdata);
                recy.setAdapter(myAdapter);
                imPresenter = new ImPresenter(this);
                imPresenter.requestData(Contacts.USER_LOGIN,map,MyData.class);
                myAdapter.setItemClick(new MyAdapter.ItemClick() {
                 @Override
                 public void setItemClick(View v, int i) {
                     Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                     intent.putExtra("id",mdata.get(i).getPid()+"");
                     startActivity(intent);
                 }
             });
            }else{
                pd=0;
                qiehuan.setBackground(getResources().getDrawable(R.drawable.line));
                LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
                recy.setLayoutManager(linearLayoutManager);
                myAdapter = new MyAdapter(this, Mdata);
                recy.setAdapter(myAdapter);
                imPresenter = new ImPresenter(this);
                imPresenter.requestData(Contacts.USER_LOGIN,map,MyData.class);
                myAdapter.setItemClick(new MyAdapter.ItemClick() {
                    @Override
                    public void setItemClick(View v, int i) {
                        Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                        intent.putExtra("id",mdata.get(i).getPid()+"");
                        startActivity(intent);

                    }
                });

            }
            break;
    }
}

private void zonghe_change() {
    zonghe_bol=true;
    xiaoliang_bol=false;
    jiage_bol=false;
    zonghe.setTextColor(Color.RED);
    xiaoliang.setTextColor(Color.BLACK);
    jiage.setTextColor(Color.BLACK);
}
private void xiaoliang_change(){
    zonghe_bol=false;
    xiaoliang_bol=true;
    jiage_bol=false;
    xiaoliang.setTextColor(Color.RED);
    zonghe.setTextColor(Color.BLACK);
    jiage.setTextColor(Color.BLACK);
}
private void jiage_change(){
    zonghe_bol=false;
    xiaoliang_bol=false;
    jiage_bol=true;
    jiage.setTextColor(Color.RED);
    xiaoliang.setTextColor(Color.BLACK);
    zonghe.setTextColor(Color.BLACK);
}

}
public class Main2Activity extends AppCompatActivity {

@BindView(R.id.images)
ImageView images;
@BindView(R.id.titles)
TextView titles;
@BindView(R.id.prices)
TextView prices;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    ButterKnife.bind(this);
    Fresco.initialize(this);
    EventBus.getDefault().register(this);

}

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void messageEventBus(News.DataBean bean) {
    String image = bean.getImages();
    String[] splits = image.split("\\|");
    Uri parse = Uri.parse(splits[0]);
    Toast.makeText(this, parse+"", Toast.LENGTH_SHORT).show();
    images.setImageURI(parse);

    String title = bean.getTitle();
    titles.setText(title);

    int price = bean.getPrice();
    prices.setText("¥"+price);

}

//防止内存
@Override
protected void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值