依赖
// Glide加载图片
compile 'com.github.bumptech.glide:glide:3.7.0'
// recyclerview
implementation 'com.android.support:recyclerview-v7:26.1.0'
/*okhttp网络请求*/
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
//butterknife
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//eventbus
implementation 'org.greenrobot:eventbus:3.1.1'
implementation files('libs/gson-2.5.jar')
implementation files('libs/universal-image-loader-1.9.5.jar')
implementation project(':okhttp')
implementation 'com.xw.repo:xedittext:2.1.0@aar'
/*fresco图片处理*/
implementation 'com.facebook.fresco:fresco:1.11.0'
/*轮播图 依赖*/
implementation 'com.youth.banner:banner:1.4.9'
权限
<uses-permission android:name="android.permission.INTERNET" />
布局
activity_main.xml
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_gravity="center"
android:id="@+id/main_back"
android:src="@drawable/btn_back"
android:layout_width="35dp"
android:layout_height="35dp" />
<com.xw.repo.XEditText
android:paddingLeft="20dp"
android:id="@+id/main_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="8"
android:background="@drawable/shape">
</com.xw.repo.XEditText>
<Button
android:layout_gravity="center"
android:id="@+id/main_btn"
android:text="搜索"
android:layout_width="52dp"
android:layout_height="52dp" />
<ImageView
android:layout_gravity="center"
android:id="@+id/main_img"
android:src="@drawable/menu1"
android:layout_weight="1"
android:layout_width="45dp"
android:layout_height="45dp" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/main_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
activity_scend.xml
<com.youth.banner.Banner
android:id="@+id/scend_banner"
android:layout_width="match_parent"
android:layout_height="250dp">
</com.youth.banner.Banner>
<TextView
android:id="@+id/scend_title"
android:text="标题"
android:textSize="30sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_marginTop="30dp"
android:id="@+id/scend_price"
android:text="价格"
android:textColor="#f00"
android:textSize="25sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
item_layout.xml
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/item_img"
android:src="@mipmap/ic_launcher"
android:layout_width="80dp"
android:layout_height="80dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/item_title"
android:text="标题"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_price"
android:textColor="#f00"
android:text="价格"
android:textSize="25sp"
android:layout_marginTop="50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
beans
Goods
public class Goods {
/**
* msg : 查询成功
* code : 0
* data : [{"bargainPrice":11800,"createtime":"2017-10-10T17:33:37","detailUrl":"https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg","itemtype":0,"pid":57,"price":5199,"pscid":40,"salenum":4343,"sellerid":1,"subhead":"【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统","title":"小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银 "},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/5025518.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8830/106/1760940277/195595/5cf9412f/59bf2ef5N5ab7dc16.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5428/70/1520969931/274676/b644dd0d/591128e7Nd2f70da0.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5566/365/1519564203/36911/620c750c/591128eaN54ac3363.jpg!q70.jpg","itemtype":1,"pid":58,"price":6399,"pscid":40,"salenum":545,"sellerid":2,"subhead":"升级4G大显存!Nvme协议Pcie SSD,速度快人一步】GTX1050Ti就选拯救者!专业游戏键盘&新模具全新设计!","title":"联想(Lenovo)拯救者R720 15.6英寸游戏笔记本电脑(i5-7300HQ 8G 1T+128G SSD GTX1050Ti 4G IPS 黑)"},{"bargainPrice":5599,"createtime":"2017-10-10T17:30:32","detailUrl":"https://item.m.jd.com/product/4824715.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n12/jfs/t7768/184/1153704394/148460/f42e1432/599a930fN8a85626b.jpg!q70.jpg","itemtype":0,"pid":59,"price":5599,"pscid":40,"salenum":675,"sellerid":3,"subhead":"游戏本选择4G独显,拒绝掉帧】升级版IPS全高清防眩光显示屏,WASD方向键颜色加持,三大出风口立体散热!","title":"戴尔DELL灵越游匣15PR-6648B GTX1050 15.6英寸游戏笔记本电脑(i5-7300HQ 8G 128GSSD+1T 4G独显 IPS)黑"},{"bargainPrice":11800,"createtime":"2017-10-14T21:48:08","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":2,"pid":60,"price":13888,"pscid":40,"salenum":466,"sellerid":4,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":1,"pid":61,"price":14999,"pscid":40,"salenum":5535,"sellerid":5,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-03T23:53:28","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":0,"pid":62,"price":15999,"pscid":40,"salenum":43,"sellerid":6,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":1,"pid":63,"price":10000,"pscid":40,"salenum":3232,"sellerid":7,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-03T23:43:53","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":0,"pid":64,"price":11000,"pscid":40,"salenum":0,"sellerid":8,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:48:08","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":2,"pid":65,"price":12000,"pscid":40,"salenum":868,"sellerid":9,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":1,"pid":66,"price":13000,"pscid":40,"salenum":7676,"sellerid":10,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"}]
* page : 1
*/
private String msg;
private String code;
private String page;
private List<DataBean> data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* bargainPrice : 11800
* createtime : 2017-10-10T17:33:37
* detailUrl : https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
* images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg
* itemtype : 0
* pid : 57
* price : 5199
* pscid : 40
* salenum : 4343
* sellerid : 1
* subhead : 【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统
* title : 小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银
*/
private int bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int itemtype;
private int pid;
private int price;
private int pscid;
private int salenum;
private int sellerid;
private String subhead;
private String title;
public int getBargainPrice() {
return bargainPrice;
}
public void setBargainPrice(int bargainPrice) {
this.bargainPrice = bargainPrice;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getDetailUrl() {
return detailUrl;
}
public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images;
}
public int getItemtype() {
return itemtype;
}
public void setItemtype(int itemtype) {
this.itemtype = itemtype;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getPscid() {
return pscid;
}
public void setPscid(int pscid) {
this.pscid = pscid;
}
public int getSalenum() {
return salenum;
}
public void setSalenum(int salenum) {
this.salenum = salenum;
}
public int getSellerid() {
return sellerid;
}
public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}
public String getSubhead() {
return subhead;
}
public void setSubhead(String subhead) {
this.subhead = subhead;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "DataBean{" +
"bargainPrice=" + bargainPrice +
", createtime='" + createtime + '\'' +
", detailUrl='" + detailUrl + '\'' +
", images='" + images + '\'' +
", itemtype=" + itemtype +
", pid=" + pid +
", price=" + price +
", pscid=" + pscid +
", salenum=" + salenum +
", sellerid=" + sellerid +
", subhead='" + subhead + '\'' +
", title='" + title + '\'' +
'}';
}
}
}
banners
MyBanner
public class MyBanner extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//初始化Glid包
Glide.with(context).load(path).into(imageView);
}
}
adapter
MyAdapter
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Goods.DataBean> list;
private Context context;
public MyAdapter(List<Goods.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false);
return new ViewHodel(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
((ViewHodel)holder).item_title.setText(list.get(position).getTitle());
((ViewHodel)holder).item_price.setText("¥:"+list.get(position).getPrice());
//切割图片
String images = list.get(position).getImages();//得到图片集
String[] split = images.split("\\|");//得到一个图片
if (split.length>0) {
//将https成http 进行联网显示
String replace = split[0].replace("https", "http");
Uri parse = Uri.parse(replace);
//Glide.with(context).load(replace).into(((ViewHodel)holder).item_img);//设置图片
((ViewHodel)holder).item_img.setImageURI(parse);
}
((ViewHodel) holder).itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.OnItemClick(v,position);
}
});
//长按
((ViewHodel) holder).itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
onItemLongClickListener.OnItemLongClick(v,position);
return true;
}
});
}
@Override
public int getItemCount() {
return list.size();
}
private class ViewHodel extends RecyclerView.ViewHolder {
private final TextView item_price;
private final SimpleDraweeView item_img;
private final TextView item_title;
public ViewHodel(View view) {
super(view);
item_img = view.findViewById(R.id.item_img);
item_title = view.findViewById(R.id.item_title);
item_price = view.findViewById(R.id.item_price);
}
}
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener{
void OnItemClick(View view, int position);
}
private OnItemLongClickListener onItemLongClickListener;
public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
this.onItemLongClickListener = onItemLongClickListener;
}
public interface OnItemLongClickListener{
void OnItemLongClick(View view, int position);
}
}
http
HttpConfig
public class HttpConfig {
public static String news_url="http://www.zhaoapi.cn/product/searchProducts";
}
OkHttpUtils
public class OkHttpUtils {
public static OkHttpUtils oKhttpUtils;
private final OkHttpClient okHttpClient;
private final Handler myhandler;
private OkHttpUtils() {
//日志拦截器
// HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
// httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
//主线程Handler
myhandler = new Handler(Looper.getMainLooper());
okHttpClient = new OkHttpClient.Builder()
.readTimeout(5000, TimeUnit.MILLISECONDS)
.writeTimeout(5000, TimeUnit.MILLISECONDS)
.connectTimeout(5000, TimeUnit.MILLISECONDS)
// .addInterceptor(httpLoggingInterceptor)
.build();
}
public static OkHttpUtils getoKhttpUtils() {
if (oKhttpUtils == null) {
synchronized (OkHttpUtils.class) {
if (oKhttpUtils == null) {
return oKhttpUtils = new OkHttpUtils();
}
}
}
return oKhttpUtils;
}
//异步get
public void doGet(String url, final IOKhttpUtilsCallback ioKhttpUtilsCallback) {
Request request = new Request.Builder()
.get()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
if (ioKhttpUtilsCallback != null) {
//切换到主线程
myhandler.post(new Runnable() {
@Override
public void run() {
ioKhttpUtilsCallback.onFailure(e.getMessage());
}
});
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response != null && response.isSuccessful()) {
final String json = response.body().string();
if (ioKhttpUtilsCallback != null) {
//切换到主线程
myhandler.post(new Runnable() {
@Override
public void run() {
ioKhttpUtilsCallback.onResponse(json);
}
});
}
} else {
if (ioKhttpUtilsCallback != null) {
//切换到主线程
myhandler.post(new Runnable() {
@Override
public void run() {
ioKhttpUtilsCallback.onFailure("网络异常");
}
});
}
}
}
});
}
//异步post
public void doPost(String url, Map<String, String> map, final IOKhttpUtilsCallback ioKhttpUtilsCallback) {
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String, String> entry : map.entrySet()) {
builder.add(entry.getKey(), entry.getValue());
}
FormBody formBody = builder.build();
Request request = new Request.Builder()
.post(formBody)
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
if (ioKhttpUtilsCallback != null) {
//切换到主线程
myhandler.post(new Runnable() {
@Override
public void run() {
ioKhttpUtilsCallback.onFailure(e.getMessage());
}
});
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response != null && response.isSuccessful()) {
final String json = response.body().string();
if (ioKhttpUtilsCallback != null) {
//切换到主线程
myhandler.post(new Runnable() {
@Override
public void run() {
ioKhttpUtilsCallback.onResponse(json);
}
});
}
} else {
if (ioKhttpUtilsCallback != null) {
//切换到主线程
myhandler.post(new Runnable() {
@Override
public void run() {
ioKhttpUtilsCallback.onFailure("网络异常");
}
});
}
}
}
});
}
//接口回调
public interface IOKhttpUtilsCallback {
void onFailure(String error);
void onResponse(String json);
}
}
主页面
MainActivity
public class MainActivity extends AppCompatActivity implements MainView {
@BindView(R.id.main_back)
ImageView mMainBack;
@BindView(R.id.main_img)
ImageView mMainImg;
@BindView(R.id.main_recycler)
RecyclerView mMainRecycler;
@BindView(R.id.main_text)
XEditText mMainText;
@BindView(R.id.main_btn)
Button mMainBtn;
private MainPresenter mainPresenter = new MainPresenter(this);
private String keywords = "笔记本";
private int page = 1;
private List<Goods.DataBean> list;
private int type=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fresco.initialize(context());
ButterKnife.bind(this);
mainPresenter.getData(keywords, page);
}
@OnClick({R.id.main_back, R.id.main_img, R.id.main_btn})
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.main_back:
finish();
break;
case R.id.main_img:
if(type==0){
GridLayoutManager manager = new GridLayoutManager(this, 2);
mMainRecycler.setLayoutManager(manager);
mMainImg.setImageResource(R.drawable.menu2);
type=1;
}else{
LinearLayoutManager manager = new LinearLayoutManager(context());
mMainRecycler.setLayoutManager(manager);
mMainImg.setImageResource(R.drawable.menu1);
type=0;
}
break;
case R.id.main_btn:
String text = String.valueOf(mMainText.getText());
keywords=text;
mainPresenter.getData(keywords, page);
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
finish();
}
@Override
public Context context() {
return this;
}
@Override
public void onSuccess(Goods goods) {
//Toast.makeText(context(), "成功" + goods.getData().toString(), Toast.LENGTH_SHORT).show();
final List<Goods.DataBean> list = goods.getData();
LinearLayoutManager manager = new LinearLayoutManager(context());
mMainRecycler.setLayoutManager(manager);
final MyAdapter adapter = new MyAdapter(list, context());
mMainRecycler.setAdapter(adapter);
adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void OnItemClick(View view, int position) {
Goods.DataBean bean = list.get(position);
EventBus.getDefault().postSticky(bean);
Intent intent = new Intent(MainActivity.this, ScendActivity.class);
startActivity(intent);
}
});
adapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
@Override
public void OnItemLongClick(View view, final int position) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("数据");
builder.setMessage("确定删除吗");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
list.remove(position);
adapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("取消",null);
builder.show();
}
});
}
@Override
public void onError(String error) {
Toast.makeText(context(), "搜索失败", Toast.LENGTH_SHORT).show();
}
}
ScendActivity
扫描二维码关注公众号,回复:
4737363 查看本文章
public class ScendActivity extends AppCompatActivity {
@BindView(R.id.scend_banner)
Banner scend_banner;
@BindView(R.id.scend_title)
TextView scend_title;
@BindView(R.id.scend_price)
TextView scend_price;
private List<String> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scend);
ButterKnife.bind(this);
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void getGoodsBean(Goods.DataBean bean) {
Log.i("aaa", bean.toString());
String images = bean.getImages();
String[] split = images.split("\\|");//得到一个图片
for (int i = split.length - 1; i > 0; i--) {
String replace = split[i].replace("https", "http");
list.add(replace);
}
scend_banner.setImageLoader(new MyBanner());
scend_banner.setImages(list);
scend_banner.setDelayTime(1000);
scend_banner.start();
scend_title.setText(bean.getTitle());
scend_price.setText("¥:"+bean.getBargainPrice());
}
}
base
BasePresenter
public abstract class BasePresenter<V extends IView> {
protected V view;
public BasePresenter(V view) {
this.view=view;
initModel();
}
protected abstract void initModel();
}
IView
public interface IView {
Context context();
}
MVP
MainView
public interface MainView extends IView {
void onSuccess(Goods goods);
void onError(String error);
}
MainPresenter
public class MainPresenter extends BasePresenter<MainView> {
private MainModel mainModel;
public MainPresenter(MainView view) {
super(view);
}
@Override
protected void initModel() {
mainModel = new MainModel();
}
public void getData(String keywords, int page){
mainModel.getData(keywords, page, new MainModel.IMainModelCallBack() {
@Override
public void getSuccess(Goods goods) {
if(view!=null){
view.onSuccess(goods);
}
}
@Override
public void getFail(String error) {
if(view!=null){
view.onError(error);
}
}
});
}
}
MainModel
public class MainModel {
public void getData(String keywords, int page,final IMainModelCallBack iMainModelCallBack){
//http://www.zhaoapi.cn/product/searchProducts?keywords=笔记本&page=1
OkHttpUtils okHttpUtils = OkHttpUtils.getoKhttpUtils();
okHttpUtils.doGet(HttpConfig.news_url + "?keywords=" + keywords + "&page=" + page, new OkHttpUtils.IOKhttpUtilsCallback() {
@Override
public void onFailure(String error) {
if(iMainModelCallBack!=null) {
iMainModelCallBack.getFail(error);
}
}
@Override
public void onResponse(String json) {
Goods goods = new Gson().fromJson(json, Goods.class);
String code = goods.getCode();
if(code.equals("0")){
if(iMainModelCallBack!=null){
iMainModelCallBack.getSuccess(goods);
}
}else{
if(iMainModelCallBack!=null){
iMainModelCallBack.getFail("未获取到数据");
}
}
}
});
}
public interface IMainModelCallBack{
void getSuccess(Goods goods);
void getFail(String error);
}
}