APi
public interface Api {
@GET
io.reactivex.Observable getData(@Url String url);
}
Retrofit
public class OkHttpRetrofit {
public final Api api;
private OkHttpRetrofit(){
final Retrofit build=new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://172.17.8.100/")
.build();
api = build.create(Api.class);
}
static class RetrofitUtils{
private static OkHttpRetrofit okUtilsRetrofit=new OkHttpRetrofit();
}
//danli
public static OkHttpRetrofit getdanli() {
return RetrofitUtils.okUtilsRetrofit;
}
}
MVP
interface接口
public interface IMainView {
void onSuccess(Object o);
}
public interface IModel {
void get(String url,Class aClass,NewCallBack newCallBack);
interface NewCallBack{
void onSuccess(Object o);
}
}
public interface IPresenter {
void get(String url,Class aClass);
}
Model
public class Model implements IModel {
private final OkHttpRetrofit getdanli;
public Model(){
getdanli = OkHttpRetrofit.getdanli();
}
@Override
public void get(String url, final Class aClass, final NewCallBack newCallBack) {
getdanli.api.getData(url)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ResponseBody responseBody) {
Gson gson=new Gson();
try {
final Object o = gson.fromJson(responseBody.string(), aClass);
newCallBack.onSuccess(o);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}
Presenter
public class Presenter implements IPresenter {
IMainView iMainView;
private final Model model;
public Presenter(IMainView iMainView) {
this.iMainView = iMainView;
model = new Model();
}
@Override
public void get(String url, Class aClass) {
model.get(url, aClass, new IModel.NewCallBack() {
@Override
public void onSuccess(Object o) {
iMainView.onSuccess(o);
}
});
}
}
MianView
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shou, container, false);
unbinder = ButterKnife.bind(this, view);
GridLayoutManager gridLayoutManager=new GridLayoutManager(getActivity(),2);
bigRecycler.setLayoutManager(gridLayoutManager);
presenter=new Presenter(this);
butSou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
name=editSou.getText().toString();
presenter.get(“small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=”+name,ShouBean.class);
}
});
return view;
}
@Override
public void onSuccess(Object o) {
Log.e("ABD",""+o);
if (o instanceof ShouBean){
ShouBean shouBean= (ShouBean) o;
List<ShouBean.ResultBean> result=shouBean.getResult();
shouAdapter = new ShouAdapter(getActivity());
bigRecycler.setAdapter(shouAdapter);
shouAdapter.setList(result);
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
适配器
public class ShouAdapter extends RecyclerView.Adapter<ShouAdapter.ViewHolder> {
private Context context;
private List<ShouBean.ResultBean> result;
public ShouAdapter(Context context) {
this.context = context;
result=new ArrayList<>();
}
public void setList(List<ShouBean.ResultBean> result) {
this.result = result;
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=LayoutInflater.from(context).inflate(R.layout.shou_item,null);
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.name.setText(result.get(i).getCommodityName());
viewHolder.price.setText(result.get(i).getPrice()+"");
Uri uri=Uri.parse(result.get(i).getMasterPic());
viewHolder.img.setImageURI(uri);
}
@Override
public int getItemCount() {
return result.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final SimpleDraweeView img;
private final TextView name;
private final TextView price;
public ViewHolder(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.simp_img);
name = itemView.findViewById(R.id.shou_name_text);
price = itemView.findViewById(R.id.shou_price_text);
}
}
}