1.布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_margin="10dp"
android:layout_gravity="center"
android:id="@+id/simp_zhanxiang"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="14dp"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥:388"
android:textColor="#f00"
android:textSize="16sp"
android:id="@+id/text_zhanxiangprice"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="原价格:¥ 699"
android:textColor="#bbbbbb"
android:id="@+id/text_zhanxiangyuanprice"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="XXXXX"
android:textSize="16sp"
android:layout_marginTop="16dp"
android:textStyle="bold"
android:id="@+id/text_zhanxiangname"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center_vertical"
android:layout_height="72dp">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/btn_zhanxiangjia"
android:background="#f00"
android:text="加入购物车"
android:textSize="20sp"
android:textColor="#ffffff"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/btn_zhanxianggou"
android:background="#ff0"
android:text="立即购买"
android:textSize="20sp"
android:textColor="#ffffff"
/>
</LinearLayout>
</LinearLayout>
2.主页面
public class ZhanXiangActivity extends BaseActivity<ZhanXiangPresenter> implements ZhanXiangContract.View {
@BindView(R.id.simp_zhanxiang)
SimpleDraweeView simpZhanxiang;
@BindView(R.id.text_zhanxiangprice)
TextView textZhanxiangprice;
@BindView(R.id.text_zhanxiangyuanprice)
TextView textZhanxiangyuanprice;
@BindView(R.id.text_zhanxiangname)
TextView textZhanxiangname;
@BindView(R.id.btn_zhanxiangjia)
Button btnZhanxiangjia;
@BindView(R.id.btn_zhanxianggou)
Button btnZhanxianggou;
private String pid;
private Newszhanxiang.DataBean data;
private String uid;
Map<String,String> map = new HashMap<>();
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerZhanXiangComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.zhanXiangModule(new ZhanXiangModule(this))
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_zhan_xiang; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
Intent intent = getIntent();
pid = intent.getStringExtra("pid");
mPresenter.getzhanxiang(pid);
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
}
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageEvent(User1 user) {
uid = String.valueOf(user.getT());
}
@Override
public void showLoading() {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void showData1(Newszhanxiang newszhanxiang) {
data = newszhanxiang.getData();
String images = data.getImages();
double price = data.getPrice();
textZhanxiangprice.setText(price + "");
String title = data.getTitle();
textZhanxiangname.setText(title);
if (images.contains("|")) {
images = images.substring(0, images.indexOf("|"));
} else {
images = data.getImages();
}
Uri parse = Uri.parse(images);
simpZhanxiang.setImageURI(parse);
}
@Override
public void showDataadd(Newsadd newsadd) {
String msg = newsadd.getMsg();
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: add setContentView(...) invocation
ButterKnife.bind(this);
}
@OnClick({R.id.btn_zhanxiangjia, R.id.btn_zhanxianggou})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_zhanxiangjia:
if(uid==null)
{
Toast.makeText(this, "请先登录", Toast.LENGTH_SHORT).show();
}
else
{
map.put("uid",uid);
map.put("pid",pid);
mPresenter.getmeadd(map);
}
break;
case R.id.btn_zhanxianggou:
break;
}
}
}
3.详情接口
//展示列表点击跳转
@GET("product/getProductDetail?")
Observable<Newszhanxiang> getZhanxiang(@Query("pid")String uid);
4.C层
public interface ZhanXiangContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void showData1(Newszhanxiang newszhanxiang);
void showDataadd(Newsadd newsadd);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<Newszhanxiang> responseMsg(String pid);
Observable<Newsadd> responseMsgadd(Map<String,String> pid);
}
}
M层
@Override
public Observable<Newszhanxiang> responseMsg(String pid) {
MService mService = mRepositoryManager.obtainRetrofitService(MService.class);
Observable<Newszhanxiang> zhanxiang = mService.getZhanxiang(pid);
return zhanxiang;
}
@Override
public Observable<Newsadd> responseMsgadd(Map<String, String> pid) {
MService mService = mRepositoryManager.obtainRetrofitService(MService.class);
Observable<Newsadd> meadd = mService.getMeadd(pid);
return meadd;
}
P层
@SuppressLint("CheckResult")
public void getzhanxiang(String pid)
{
Observable<Newszhanxiang> newszhanxiangObservable = mModel.responseMsg(pid);
newszhanxiangObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Newszhanxiang>() {
@Override
public void accept(Newszhanxiang newszhanxiang) throws Exception {
mRootView.showData1(newszhanxiang);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
});
}
@SuppressLint("CheckResult")
public void getmeadd(Map<String,String> pid)
{
Observable<Newsadd> newsaddObservable = mModel.responseMsgadd(pid);
newsaddObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Newsadd>() {
@Override
public void accept(Newsadd newsadd) throws Exception {
mRootView.showDataadd(newsadd);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
});
}
4.添加购物车接口
//添加购物车
@GET("product/addCart?")
Observable<Newsadd> getMeadd(@QueryMap Map<String,String> querymap);