MainActivity
private RecyclerView recycler;
private MyAdapter adapter;
private EditText ed;
private Mainpresenteriml mainpresenteriml;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recycler = (RecyclerView) findViewById(R.id.recycler);
ed = findViewById(R.id.nr);
findViewById(R.id.ss).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
init();
}
});
// 设置类型
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recycler.setLayoutManager(linearLayoutManager);
adapter = new MyAdapter(this);
recycler.setAdapter(adapter);
mainpresenteriml = new Mainpresenteriml(new MainModeliml(),this);
mainpresenteriml.dodata("手机",1+"");
}
private void init(){
String context = ed.getText().toString().trim();
if(TextUtils.isEmpty(context)){
Toast.makeText(this,"请输入数据在进行查询",Toast.LENGTH_SHORT).show();;
}else{
mainpresenteriml.dodata(context,1+"");
adapter.notifyDataSetChanged(); // 刷新
}
};
@Override
public void success(String data) {
DataBean bean = new Gson().fromJson(data, DataBean.class);
adapter.setlist(bean.getResult());
}
@Override
public void fail() {
}
MyAdapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Httpcll> {
private List<DataBean.ResultBean> list = new ArrayList<>();
Context context;
public MyAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public MyAdapter.Httpcll onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.recyle_bj,null);
Httpcll httpcll = new Httpcll(view);
return httpcll;
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.Httpcll httpcll, int i) {
httpcll.js.setText(list.get(i).getCommodityName());
httpcll.jg.setText(list.get(i).getPrice()+"¥");
httpcll.dz.setText("已售"+list.get(i).getSaleNum()+"间");
Glide.with(context).load(list.get(i).getMasterPic()).into(httpcll.image);
}
@Override
public int getItemCount() {
return list.size();
}
public void setlist(List<DataBean.ResultBean> result) {
this.list = result;
}
public class Httpcll extends RecyclerView.ViewHolder {
ImageView image;
TextView js,dz,jg;
public Httpcll(@NonNull View itemView) {
super(itemView);
js = itemView.findViewById(R.id.js);
image = itemView.findViewById(R.id.image);
dz = itemView.findViewById(R.id.dz);
jg = itemView.findViewById(R.id.jg);
}
}
}
OkHttpUtils
private int HTTP_SUCCESS= 1000;
private int HTTP_FAIL= 1001;
public OkHttpUtils get(String url){
init(url,0,null);
return this;
}
public OkHttpUtils post(String url,FormBody.Builder boydbuilder){
init(url,1,boydbuilder);
return this;
}
private void init(String url, int i, FormBody.Builder boydbuilder) {
OkHttpClient client = new OkHttpClient();
Request.Builder build = new Request.Builder();
if(i == 0){
build.get();
}else{
build.post(boydbuilder.build());
}
build.url(url);
Request request = build.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message = Message.obtain();
message.what = HTTP_FAIL;
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Message message = Message.obtain();
message.obj = response.body().string();
message.what = HTTP_SUCCESS;
handler.sendMessage(message);
}
});
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == HTTP_SUCCESS){
String data = (String) msg.obj;
linEner.success(data);
}else{
linEner.fail();
}
}
};
LinEner linEner;
public void resonset(LinEner linEner){
this.linEner = linEner;
}
public interface LinEner{
void success(String data);
void fail();
}
}
MVP
view
package com.example.mvp.view;
public interface MainView {
void success(String data);
void fail();
}
model
*MainView*
package com.example.mvp.model;
public interface MainModel {
public interface CallBackLinstEner{
void success(String data);
void fail();
}
void doCommterm(String keyword,String page,CallBackLinstEner linstEner);
}
*MainViewiml*
package com.example.mvp.model;
import com.example.net.OkHttpUtils;
public class MainModeliml implements MainModel {
// 在这李进行获取网络
@Override
public void doCommterm(String keyword, String page, final CallBackLinstEner linstEner) {
String url = "http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?keyword="+keyword+"&page="+page+"&count=10";
new OkHttpUtils().get(url).resonset(new OkHttpUtils.LinEner() {
@Override
public void success(String data) {
linstEner.success(data);
}
@Override
public void fail() {
linstEner.fail();
}
});
}
}
presenter
*mainpresenter*
package com.example.mvp.presenter;
public interface Mainpresenter {
void dodata(String keyword,String page);
}
*mainpresenteiml*
package com.example.mvp.presenter;
import com.example.mvp.model.MainModel;
import com.example.mvp.view.MainView;
import com.example.zhangzhichaoerzho.MainActivity;
public class Mainpresenteriml implements Mainpresenter, MainModel.CallBackLinstEner {
MainModel mainModel;
MainView mainView;
public Mainpresenteriml(MainModel mainModel, MainView mainView) {
this.mainModel = mainModel;
this.mainView = mainView;
}
@Override
public void dodata(String keyword, String page) {
mainModel.doCommterm(keyword,page,this);
}
@Override
public void success(String data) {
mainView.success(data);
}
@Override
public void fail() {
mainView.fail();
}
}
bean
package com.example.bean;
import java.util.List;
public class DataBean {
/**
* message : 查询成功
* result : [{"commodityId":105,"commodityName":"小米8 256GB 全面屏 双频GPS智能拍照游戏手机","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sj/6/1.jpg","price":3099,"saleNum":0},{"commodityId":120,"commodityName":"德米克 高端正品3d眼镜虚拟现实VR BOX眼镜二代定制LOGO手机家庭影院","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/yyyl/7/1.jpg","price":189,"saleNum":0},{"commodityId":101,"commodityName":"vivo X23幻彩版 多套餐 全面屏拍照美颜超大广角摄影水滴屏智能4G 正品vivox23手机","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sj/2/1.jpg","price":2798,"saleNum":0},{"commodityId":112,"commodityName":"黑色重力支架 车载手机架汽车用导航支架车上支撑出风口汽车内多功能通用型金属车载支架","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sjpj/6/1.jpg","price":35,"saleNum":0},{"commodityId":109,"commodityName":"新款奢华镶钻镜面iphone xs max手机壳苹果7plusl软边时尚保护套","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sjpj/3/1.jpg","price":89,"saleNum":0},{"commodityId":104,"commodityName":"OPPO R17 全网通 8G+128G 美拍补光灯+美容补水仪套餐 全面屏AI智慧美颜双摄拍照手机","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sj/5/1.jpg","price":3799,"saleNum":0},{"commodityId":119,"commodityName":"斯泰克 吃鸡神器手游键盘 快捷射击辅助按键四指手机游戏 绝地求生刺激战场游戏手柄合金款 苹果安卓通用 扳机射击按键(2件装)","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/yyyl/6/1.jpg","price":39,"saleNum":0},{"commodityId":100,"commodityName":"【壳膜线套餐】 苹果 iPhone XS 256G 全网通手机","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sj/1/1.jpg","price":10069,"saleNum":0},{"commodityId":111,"commodityName":"三合一充电器数据线苹果二合一拖安卓手机多用功能多头车载苹果安卓一拖三数据线Type-C铝合金编织线 土豪金","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sjpj/5/1.jpg","price":39,"saleNum":0},{"commodityId":106,"commodityName":"三星Galaxy S9+ 6GB+128GB版曲屏手机/指纹识别手机/拍照手机","masterPic":"http://172.17.8.100/images/small/commodity/sjsm/sj/7/1.jpg","price":6199,"saleNum":0}]
* status : 0000
*/
private String message;
private String status;
private List<ResultBean> result;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<ResultBean> getResult() {
return result;
}
public void setResult(List<ResultBean> result) {
this.result = result;
}
public static class ResultBean {
/**
* commodityId : 105
* commodityName : 小米8 256GB 全面屏 双频GPS智能拍照游戏手机
* masterPic : http://172.17.8.100/images/small/commodity/sjsm/sj/6/1.jpg
* price : 3099
* saleNum : 0
*/
private int commodityId;
private String commodityName;
private String masterPic;
private double price;
private int saleNum;
public int getCommodityId() {
return commodityId;
}
public void setCommodityId(int commodityId) {
this.commodityId = commodityId;
}
public String getCommodityName() {
return commodityName;
}
public void setCommodityName(String commodityName) {
this.commodityName = commodityName;
}
public String getMasterPic() {
return masterPic;
}
public void setMasterPic(String masterPic) {
this.masterPic = masterPic;
}
public double getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getSaleNum() {
return saleNum;
}
public void setSaleNum(int saleNum) {
this.saleNum = saleNum;
}
}
}
依赖
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
X:
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'