MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@BindView(R.id.mobile)
EditText mobile;
@BindView(R.id.pwd)
EditText pwd;
@BindView(R.id.login)
Button login;
private LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定控件
ButterKnife.bind(this);
loginPresenter = new LoginPresenter(new LoginCall());
login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.login:
String name = mobile.getText().toString();
String password = pwd.getText().toString();
loginPresenter.reqeust(name,password);
break;
}
}
class LoginCall implements DataCall<Result>{
@Override
public void success(Result data) {
Toast.makeText(MainActivity.this, ""+data.getMessage(), Toast.LENGTH_SHORT).show();
if (data.getMessage().equals("登录成功")){
Intent intent = new Intent(MainActivity.this,ShowActivity.class);
startActivity(intent);
}
}
}
}
Result
public class Result<T> {
String message;
String status;
T 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 T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
}
LoginBean
@Entity
public class LoginSuccess {
String headPic;
String nickName;
String phone;
String sessionId;
int sex;
@Id
long userId;
int statues;
public LoginSuccess(String headPic, String nickName, String phone, String sessionId, int sex, long userId, int statues) {
this.headPic = headPic;
this.nickName = nickName;
this.phone = phone;
this.sessionId = sessionId;
this.sex = sex;
this.userId = userId;
this.statues = statues;
}
}
BannerBean
public class Banners {
String imageUrl;
String jumpUrl;
int rank;
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getJumpUrl() {
return jumpUrl;
}
public void setJumpUrl(String jumpUrl) {
this.jumpUrl = jumpUrl;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}
/*商品的*/
public class HomeData {
private List<RxxpBean> rxxp;
public List<RxxpBean> getRxxp() {
return rxxp;
}
public void setRxxp(List<RxxpBean> rxxp) {
this.rxxp = rxxp;
}
public static class RxxpBean{
/*commodityList jsonArray 商品信息
id int 归属标签id
name string
*/
private int id;
private String name;
private ArrayList<CommodityListBean> commodityList;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<CommodityListBean> getCommodityList() {
return commodityList;
}
public void setCommodityList(ArrayList<CommodityListBean> commodityList) {
this.commodityList = commodityList;
}
}
/*commodityId int 商品id
commodityName string 商品名称
masterPic string 缩略图
price double 价格
saleNum int 销量*/
public static class CommodityListBean{
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(double price) {
this.price = price;
}
public int getSaleNum() {
return saleNum;
}
public void setSaleNum(int saleNum) {
this.saleNum = saleNum;
}
}
}
DataCall
public interface DataCall<T> {
void success(T data);
}
IRequest
public interface IRequest {
/*登录*/
@FormUrlEncoded
@POST("user/v1/login")
Observable<Result<LoginSuccess>> login(@Field("phone") String m,@Field("pwd") String p);
/*轮播图
* http://172.17.8.100/small/commodity/v1/bannerShow
* */
@GET("commodity/v1/bannerShow")
Observable<Result<List<Banners>>> bannerShow();
/*商品*/
//http://172.17.8.100/small/commodity/v1/commodityList
@GET("commodity/v1/commodityList")
Observable<Result<HomeData>> goodsShow();
}
BannerModle
public class BannerModle {
public static IRequest get() {
IRequest iRequest = NetWorkMager.instance().create(IRequest.class);
return iRequest;
}
}
BannerPresenter
public class BannerPresenter extends BasePresenter {
public BannerPresenter(DataCall consumer) {
super(consumer);
}
@Override
protected Observable observable(Object... args) {
IRequest iRequest = BannerModle.get();
return iRequest.bannerShow();
}
}
loginPresenter
public class LoginPresenter extends BasePresenter {
public LoginPresenter(DataCall consumer) {
super(consumer);
}
@Override
protected Observable observable(Object... args) {
IRequest iRequest = NetWorkMager.instance().create(IRequest.class);
return iRequest.login((String) args[0],(String) args[1]);
}
}
SpPresenter
public class HomeDataPresenter extends BasePresenter {
public HomeDataPresenter(DataCall consumer) {
super(consumer);
}
@Override
protected Observable observable(Object... args) {
IRequest iRequest = NetWorkMasnger.instance().create(IRequest.class);
return iRequest.goodsShow();
}
}
Adapter
public class RxxpAdapter extends RecyclerView.Adapter<RxxpAdapter.MyViewHolder> {
Context context;
List<HomeData.CommodityListBean> mList = new ArrayList<>();
public RxxpAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public RxxpAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view =LayoutInflater.from(context).inflate(R.layout.rxxp,viewGroup,false);
MyViewHolder myHolder = new MyViewHolder(view);
return myHolder;
}
@Override
public void onBindViewHolder(@NonNull RxxpAdapter.MyViewHolder myViewHolder, int i) {
HomeData.CommodityListBean commodityListBean = mList.get(i);
final int commodityId = commodityListBean.getCommodityId();
final double price = commodityListBean.getPrice();
final String commodityName = commodityListBean.getCommodityName();
final int saleNum = commodityListBean.getSaleNum();
final String url = commodityListBean.getMasterPic();
String[] split = url.split("\\|");
Glide.with(context).load(url).into(myViewHolder.rxxpIv);
/*if (split.length>0){
String replace = url.replace("https", "http");
}*/
myViewHolder.rxxpTv2.setText(price+"¥");
myViewHolder.rxxpTv.setText(commodityName);
}
@Override
public int getItemCount() {
return mList.size();
}
public void addData(List<HomeData.CommodityListBean> commodityList) {
if (commodityList!=null){
mList.addAll(commodityList);
}
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private ImageView rxxpIv;
private TextView rxxpTv;
private TextView rxxpTv2;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
rxxpIv = (ImageView) itemView.findViewById(R.id.rxxp_iv);
rxxpTv = (TextView) itemView.findViewById(R.id.rxxp_tv);
rxxpTv2 = (TextView) itemView.findViewById(R.id.rxxp_tv2);
}
}
}
跳转Activity
public class ShowActivity extends AppCompatActivity {
@BindView(R.id.banner)
MZBannerView banner;
ArrayList<String> bannerUrl = new ArrayList<>();
private BannerPresenter bannerPresenter;
HomeDataPresenter homeDataPresenter=new HomeDataPresenter(new GoodsCall());
private RxxpAdapter rxxpRecycler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
//绑定控件
ButterKnife.bind(this);
bannerPresenter = new BannerPresenter(new BannerCall());
bannerPresenter.reqeust();
rxxpRecycler = new RxxpAdapter(this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
rv.setLayoutManager(linearLayoutManager);
rv.setAdapter(rxxpRecycler);
homeDataPresenter.reqeust();
}
class GoodsCall implements DataCall<Result> {
@Override
public void success(Result data) {
HomeData goodsResult = (HomeData) data.getResult();
List<HomeData.RxxpBean> rxxp = goodsResult.getRxxp();
//热销商品
for (int i = 0; i < rxxp.size(); i++) {
List<HomeData.CommodityListBean> commodityList = rxxp.get(i).getCommodityList();
rxxpRecycler.addData(commodityList);
}
rxxpRecycler.notifyDataSetChanged();
}
}
class BannerCall implements DataCall<Result<List<Banners>>> {
@Override
public void success(Result<List<Banners>> data) {
List<Banners> result = (List<Banners>) data.getResult();
for (int i = 0; i < result.size(); i++) {
String ImageUrl = result.get(i).getImageUrl();
bannerUrl.add(ImageUrl);
}
banner.setPages(bannerUrl, new MZHolderCreator<BannerViewHolder>() {
@Override
public BannerViewHolder createViewHolder() {
return new BannerViewHolder();
}
});
banner.start();
}
}
public static class BannerViewHolder implements MZViewHolder<String> {
private SimpleDraweeView sd;
@Override
public View createView(Context context) {
View view = LinearLayout.inflate(context,R.layout.banner,null);
//View view = LayoutInflater.from(context).inflate(R.layout.banner, null);
sd = view.findViewById(R.id.sd);
return view;
}
@Override
public void onBind(Context context, int i, String s) {
//数据绑定
sd.setImageURI(Uri.parse(s));
}
}
//mMZBanner使用
@Override
public void onPause() {
super.onPause();
banner.pause();//暂停轮播
}
@Override
public void onResume() {
super.onResume();
banner.start();//开始轮播
}
}
MApp
public class MApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}