Commit e66bc6ea authored by yangxuenan's avatar yangxuenan Committed by 杨秀秀

完善积分商品页面

parent 08f8241b
......@@ -3,12 +3,13 @@ package com.xx.hbhconsumer.adapter;
import android.content.Context;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.data.http.respons.CreditRecordBean;
import com.xx.hbhconsumer.data.http.respons.OrderBean;
import com.xx.hbhconsumer.databinding.ItemCouponBinding;
import com.xx.hbhconsumer.databinding.ItemCreditBinding;
import com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter;
public class CreditAdapter extends xxBaseRecyclerViewAdapter<ItemCreditBinding, OrderBean> {
public class CreditAdapter extends xxBaseRecyclerViewAdapter<ItemCreditBinding, CreditRecordBean> {
public CreditAdapter(Context context) {
super(context);
mContext = context;
......@@ -20,8 +21,8 @@ public class CreditAdapter extends xxBaseRecyclerViewAdapter<ItemCreditBinding,
}
@Override
protected void covert(ItemCreditBinding dataBind, OrderBean data, int position) {
protected void covert(ItemCreditBinding dataBind, CreditRecordBean data, int position) {
// 将接口调出来的布局遍历上去
dataBind.setOrderBean(data);
dataBind.setCreditRecordBean(data);
}
}
......@@ -2,14 +2,17 @@ package com.xx.hbhconsumer.adapter;
import android.content.Context;
import com.bumptech.glide.Glide;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean;
import com.xx.hbhconsumer.data.http.respons.OrderBean;
import com.xx.hbhconsumer.databinding.ItemCreditGoodsBinding;
import com.xx.hbhconsumer.databinding.ItemNewProductsGoodsBinding;
import com.xx.hbhconsumer.utils.RetrofitClient;
import com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter;
public class CreditGoodsAdapter extends xxBaseRecyclerViewAdapter<ItemCreditGoodsBinding, OrderBean> {
public class CreditGoodsAdapter extends xxBaseRecyclerViewAdapter<ItemCreditGoodsBinding, CreditGoodsBean> {
public CreditGoodsAdapter(Context context) {
super(context);
......@@ -22,8 +25,17 @@ public class CreditGoodsAdapter extends xxBaseRecyclerViewAdapter<ItemCreditGood
}
@Override
protected void covert(ItemCreditGoodsBinding dataBind, OrderBean data, int position) {
protected void covert(ItemCreditGoodsBinding dataBind, CreditGoodsBean data, int position) {
// 将接口调出来的布局遍历上去
dataBind.setOrderBean(data);
dataBind.setCreditGoodsBean(data);
if (data.getIntegralCommodityImage() != null && !data.getIntegralCommodityImage().isEmpty()) {
Glide.with(mContext)
.load(RetrofitClient.baseImgUrl + data.getIntegralCommodityImage().get(0))
.into(dataBind.ivGoodsImg);
}
dataBind.tvGoodsName.setText(data.getIntegralCommodityName());
dataBind.tvCreditPrice.setText(String.valueOf(data.getCommodityPrice()));
}
}
......@@ -2,14 +2,17 @@ package com.xx.hbhconsumer.adapter;
import android.content.Context;
import com.bumptech.glide.Glide;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean;
import com.xx.hbhconsumer.data.http.respons.OrderBean;
import com.xx.hbhconsumer.databinding.ItemCreditGoodsBinding;
import com.xx.hbhconsumer.databinding.ItemCreditGoodsSmallBinding;
import com.xx.hbhconsumer.utils.RetrofitClient;
import com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter;
public class CreditGoodsSmallAdapter extends xxBaseRecyclerViewAdapter<ItemCreditGoodsSmallBinding, OrderBean> {
public class CreditGoodsSmallAdapter extends xxBaseRecyclerViewAdapter<ItemCreditGoodsSmallBinding, CreditGoodsBean> {
public CreditGoodsSmallAdapter(Context context) {
super(context);
......@@ -22,8 +25,17 @@ public class CreditGoodsSmallAdapter extends xxBaseRecyclerViewAdapter<ItemCredi
}
@Override
protected void covert(ItemCreditGoodsSmallBinding dataBind, OrderBean data, int position) {
protected void covert(ItemCreditGoodsSmallBinding dataBind, CreditGoodsBean data, int position) {
// 将接口调出来的布局遍历上去
dataBind.setOrderBean(data);
dataBind.setCreditGoodsBean(data);
if (data.getIntegralCommodityImage() != null && !data.getIntegralCommodityImage().isEmpty()) {
Glide.with(mContext)
.load(RetrofitClient.baseImgUrl + data.getIntegralCommodityImage().get(0))
.into(dataBind.ivGoodsImg);
}
dataBind.tvGoodsName.setText(data.getIntegralCommodityName());
dataBind.tvCreditPrice.setText(String.valueOf(data.getCommodityPrice()));
}
}
package com.xx.hbhconsumer.adapter
import android.content.Context
import android.graphics.Bitmap
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.Target
import com.xx.hbhconsumer.R
import com.xx.hbhconsumer.data.http.respons.AdvertisingBean
import com.xx.hbhconsumer.databinding.ItemBannerBinding
import com.xx.hbhconsumer.utils.RetrofitClient
import com.xx.xxviewlibrary.base.xxBaseRecyclerViewViewHolder
import com.youth.banner.adapter.BannerAdapter
/**
* banner 适配器械
*/
class ImageBannerAdapter(val context:Context, list:List<String> ) :
BannerAdapter<String, xxBaseRecyclerViewViewHolder<ItemBannerBinding>>(list) {
override fun onCreateHolder(
parent: ViewGroup?,
viewType: Int
): xxBaseRecyclerViewViewHolder<ItemBannerBinding> {
var view:View=LayoutInflater.from(parent?.context).inflate(R.layout.item_banner,parent,false)
return xxBaseRecyclerViewViewHolder(parent?.context,view)
}
override fun onBindView(
holder: xxBaseRecyclerViewViewHolder<ItemBannerBinding>?,
data: String?,
position: Int,
size: Int
) {
holder?.dataBind?.imgBanner?.let {
Glide.with(context).load(RetrofitClient.baseImgUrl + data)
.into(it)
}
}
}
......@@ -6,7 +6,11 @@ import com.xx.hbhconsumer.data.http.respons.BoothBean
import com.xx.hbhconsumer.data.http.respons.CategoryBean
import com.xx.hbhconsumer.data.http.respons.ClaimedCoupon
import com.xx.hbhconsumer.data.http.respons.CollectionBean
import com.xx.hbhconsumer.data.http.respons.CreditDetailBean
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean
import com.xx.hbhconsumer.data.http.respons.CreditGoodsDetailBean
import com.xx.hbhconsumer.data.http.respons.CreditOrderBean
import com.xx.hbhconsumer.data.http.respons.CreditRecordBean
import com.xx.hbhconsumer.data.http.respons.Filebean
import com.xx.hbhconsumer.data.http.respons.GuessLikeGoodsBean
import com.xx.hbhconsumer.data.http.respons.HotSalesBean
......@@ -249,4 +253,28 @@ interface ApiService {
@GET("/app/getCoupon/{businessId}")
fun getCoupon(@Path("businessId") businessId: String): Observable<BaseResponse<Int>>
@Headers("Content-type:application/json")
@GET("app/myPoint/pointCommodity/list")
fun getCreditGoodsList(): Observable<BasePageResponse<CreditGoodsBean>>
@Headers("Content-type:application/json")
@POST("app/myPoint/pointCommodity/list")
fun getCreditRecordList(@Body requestBody: RequestBody): Observable<BasePageResponse<CreditRecordBean>>
@Headers("Content-type:application/json")
@GET("app/myPoint/getMyPoint")
fun getMyPoint(): Observable<BaseResponse<CreditDetailBean>>
@Headers("Content-type:application/json")
@GET("app/pointExchange/pointCommodity/list")
fun getAllCreditGoodsList(): Observable<BasePageResponse<CreditGoodsBean>>
@Headers("Content-type:application/json")
@GET("app/pointExchange/pointCommodity/listTop")
fun getTopCreditGoodsList(): Observable<BasePageResponse<CreditGoodsBean>>
@Headers("Content-type:application/json")
@GET("app/pointExchange/getIntegralCommodity/{businessId}")
fun getCreditGoodsDetail(@Path("businessId") businessId: String): Observable<BaseResponse<CreditGoodsDetailBean>>
}
\ No newline at end of file
package com.xx.hbhconsumer.data.http.requst;
import com.xx.hbhconsumer.data.http.BaseRespons;
import com.xx.hbhconsumer.data.http.respons.CreditDetailBean;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsDetailBean;
import com.xx.hbhconsumer.data.http.respons.CreditRecordBean;
import io.reactivex.rxjava3.core.Observable;
import me.goldze.mvvmhabit.http.ApiParams;
import me.goldze.mvvmhabit.http.BasePageResponse;
import me.goldze.mvvmhabit.http.BaseResponse;
import okhttp3.RequestBody;
public class CreditRequest extends BaseRespons {
/**
* 低价好物商品列表
*/
public Observable<BaseResponse<CreditGoodsDetailBean>> getCreditGoodsDetail(String businessId) {
return getApiService().getCreditGoodsDetail(businessId);
}
/**
* 低价好物商品列表
*/
public Observable<BasePageResponse<CreditGoodsBean>> getAllCreditGoodsList() {
return getApiService().getAllCreditGoodsList();
}
/**
* 低价好物商品列表
*/
public Observable<BasePageResponse<CreditGoodsBean>> getTopCreditGoodsList() {
return getApiService().getTopCreditGoodsList();
}
/**
* 低价好物商品列表
*/
public Observable<BaseResponse<CreditDetailBean>> getMyPoint() {
return getApiService().getMyPoint();
}
/**
* 低价好物商品列表
*/
public Observable<BasePageResponse<CreditGoodsBean>> getCreditGoodsList() {
return getApiService().getCreditGoodsList();
}
/**
* 低价好物商品列表
*/
public Observable<BasePageResponse<CreditRecordBean>> getCreditRecordList(String incomeType, String beginTime, String endTime) {
ApiParams<GetCreditRecordListRequestBody> apiParams = new ApiParams<>();
GetCreditRecordListRequestBody requestBody = new GetCreditRecordListRequestBody(incomeType,beginTime, endTime);
RequestBody body=apiParams.setParams(requestBody);
return getApiService().getCreditRecordList(body);
}
public class GetCreditRecordListRequestBody {
public String incomeType;
public String beginTime;
public String endTime;
public GetCreditRecordListRequestBody(String incomeType, String beginTime, String endTime) {
this.incomeType = incomeType;
this.beginTime = beginTime;
this.endTime = endTime;
}
}
}
package com.xx.hbhconsumer.data.http.respons
data class CreditDetailBean(
val businessId: String,
val createBy: String,
val createTime: String,
val delFlag: String,
val integralTotal: Int,
val memberCoupon: String,
val memberNickname: String,
val memberNumber: String,
val memberPhone: String,
val memberPicture: String,
val params: Params,
val remark: String,
val status: String,
val updateBy: String,
val updateTime: String,
val usableIntegral: Int,
val userId: Int
)
\ No newline at end of file
package com.xx.hbhconsumer.data.http.respons
data class CreditGoodsBean(
val businessId: String,
val commodityPrice: Int,
val integralCommodityImage: List<String>,
val integralCommodityName: String
)
\ No newline at end of file
package com.xx.hbhconsumer.data.http.respons
data class CreditGoodsDetailBean(
val businessId: String,
val commodityDescription: String,
val commodityInventory: Int,
val commodityPrice: Int,
val couponId: String,
val createBy: String,
val createTime: String,
val delFlag: String,
val integralCommodityImage: String,
val integralCommodityName: String,
val integralCommodityType: String,
val isTop: String,
val params: Params,
val remark: String,
val status: String,
val updateBy: String,
val updateTime: String,
val integralCommodityImageUrl: List<String>,
)
\ No newline at end of file
package com.xx.hbhconsumer.data.http.respons
data class CreditRecordBean(
val beginTime: String,
val businessId: String,
val createBy: String,
val createTime: String,
val delFlag: String,
val description: String,
val endTime: String,
val gradeId: String,
val incomeType: String,
val integralType: String,
val integralVariation: Int,
val params: Params,
val remark: String,
val updateBy: String,
val updateTime: String,
val variableIntegral: Int,
val variableTime: String
)
\ No newline at end of file
......@@ -2,53 +2,53 @@ package com.xx.hbhconsumer.ui.credit;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.adapter.CreditAdapter;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.databinding.ActivityCreditDetailBinding;
import com.xx.hbhconsumer.ui.order.OrderListFragment;
import me.goldze.mvvmhabit.base.BaseActivity;
import me.tatarka.bindingcollectionadapter2.BR;
public class CreditDetailActivity extends BaseActivity<ActivityCreditDetailBinding, CreditDetailViewModel> {
final String[] tabs = new String[]{" 积分收入", "积分支出"};
private TabLayoutMediator mediator;
TabLayout tabLayout;
ViewPager2 viewPager2;
@Override
public void initData() {
super.initData();
// 初始化底部导航栏
tabLayout = findViewById(R.id.tabLayout);
viewPager2 = findViewById(R.id.viewPager2);
tabLayout.setLongClickable(false);
viewPager2.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT);
//Adapter
viewPager2.setAdapter(new FragmentStateAdapter(getSupportFragmentManager(), getLifecycle()) {
@NonNull
/*切换状态Tab*/
binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
/*订单状态 1-待付款 2-已完成 3-已关闭*/
public void onTabSelected(TabLayout.Tab tab) {
switch (tab.getPosition()) {
case 0:
viewModel.loadCreditRecordList("1", "2022", "2023");
break;
case 1:
viewModel.loadCreditRecordList("2", "2022", "2023");
break;
}
}
@Override
public Fragment createFragment(int position) {
//FragmentStateAdapter内部自己会管理已实例化的fragment对象。
// 所以不需要考虑复用的问题
return CreditListFragment.newInstance(position);
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public int getItemCount() {
return tabs.length;
public void onTabReselected(TabLayout.Tab tab) {
}
});
//viewPager 页面切换监听监听
mediator = new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> tab.setText(tabs[position]));
//要执行这一句才是真正将两者绑定起来
mediator.attach();
viewModel.creditRecordBeanList.observe(this, creditRecordBeanList -> {
CreditAdapter creditAdapter = new CreditAdapter(this);
//把adapterset进去
binding.rvCreditRecordList.setAdapter(creditAdapter);
creditAdapter.mList = creditRecordBeanList;
});
viewModel.credit.observe(this, credit -> {
binding.tvCreditNum.setText(String.valueOf(credit));
});
}
@Override
......@@ -61,4 +61,9 @@ public class CreditDetailActivity extends BaseActivity<ActivityCreditDetailBindi
return BR.creditDetailViewModel;
}
@Override
public CreditDetailViewModel initViewModel() {
CreditRequest lm = new CreditRequest();
return new CreditDetailViewModel(getApplication(), lm);
}
}
......@@ -3,17 +3,97 @@ package com.xx.hbhconsumer.ui.credit;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.xx.hbhconsumer.data.http.requst.PhoneRequest;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.data.http.respons.CreditDetailBean;
import com.xx.hbhconsumer.data.http.respons.CreditRecordBean;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.http.ApiDisposablePageObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
public class CreditDetailViewModel extends BaseViewModel<CreditRequest> {
public MutableLiveData<List<CreditRecordBean>> creditRecordBeanList = new MutableLiveData<>(new ArrayList<>());
public MutableLiveData<Integer> credit = new MutableLiveData<>(0);
public class CreditDetailViewModel extends BaseViewModel<PhoneRequest> {
public CreditDetailViewModel(@NonNull Application application) {
super(application);
}
public CreditDetailViewModel(@NonNull Application application, PhoneRequest model) {
public CreditDetailViewModel(@NonNull Application application, CreditRequest model) {
super(application, model);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
loadCreditRecordList("1", "2022", "2023");
}
public void getMyPoint() {
model.getMyPoint()
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(CreditDetailViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<CreditDetailBean>() {
@Override
public void onSuccess(CreditDetailBean resultBean) {
credit.postValue(resultBean.getIntegralTotal());
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
public void loadCreditRecordList(String incomeType, String beginTime, String endTime) {
model.getCreditRecordList(incomeType, beginTime, endTime)
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(CreditDetailViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposablePageObserver<CreditRecordBean>() {
@Override
public void onSuccess(List<CreditRecordBean> resultBean) {
creditRecordBeanList.postValue(resultBean);
}
@Override
public void onError(String Error) {
dismissDialog();
}
@Override
public void getTotal(int total) {
}
});
}
}
package com.xx.hbhconsumer.ui.credit;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.xx.hbhconsumer.BR;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.adapter.CreditAdapter;
import com.xx.hbhconsumer.adapter.OrderAdapter;
import com.xx.hbhconsumer.data.http.requst.LoginRequest;
import com.xx.hbhconsumer.data.http.respons.OrderBean;
import com.xx.hbhconsumer.databinding.FragmentCreditListBinding;
import com.xx.hbhconsumer.databinding.FragmentOrderListBinding;
import com.xx.hbhconsumer.widget.RecycleViewDivider;
import java.util.ArrayList;
import java.util.List;
import me.goldze.mvvmhabit.base.BaseFragment;
public class CreditListFragment extends BaseFragment<FragmentCreditListBinding, CreditListViewModel> {
public static CreditListFragment newInstance(Integer orderType) {
Bundle args = new Bundle();
args.putInt("orderType", orderType);
CreditListFragment fragment = new CreditListFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void initData() {
List<OrderBean> orderBeanList = new ArrayList<>();
//获取适配器上下文
CreditAdapter creditAdapter = new CreditAdapter(getActivity());
//把adapterset进去
binding.rvOrderList.setAdapter(creditAdapter);
binding.rvOrderList.addItemDecoration(new RecycleViewDivider(getContext(), LinearLayoutManager.VERTICAL));
creditAdapter.mList = orderBeanList;
}
@Override
public int viewModelType() {
return 1;
}
@Override
public int initContentView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return R.layout.fragment_credit_list;
}
@Override
public int initVariableId() {
return BR.creditListViewModel;
}
@Override
public CreditListViewModel initViewModel() {
LoginRequest model = new LoginRequest();
return new CreditListViewModel(getActivity().getApplication(), model);
}
}
package com.xx.hbhconsumer.ui.credit;
import android.app.Application;
import androidx.annotation.NonNull;
import com.xx.hbhconsumer.data.http.requst.LoginRequest;
import com.xx.hbhconsumer.ui.order.OrderDetailActivity;
import me.goldze.mvvmhabit.base.BaseViewModel;
public class CreditListViewModel extends BaseViewModel<LoginRequest> {
public CreditListViewModel(@NonNull Application application, LoginRequest model) {
super(application, model);
}
public void goOrderDetail(int position) {
startActivity(OrderDetailActivity.class);
}
}
......@@ -7,12 +7,9 @@ import androidx.recyclerview.widget.GridLayoutManager;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.adapter.CreditGoodsAdapter;
import com.xx.hbhconsumer.adapter.CreditGoodsSmallAdapter;
import com.xx.hbhconsumer.data.http.respons.OrderBean;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.databinding.ActivityCreditsExchangeBinding;
import java.util.ArrayList;
import java.util.List;
import me.goldze.mvvmhabit.base.BaseActivity;
import me.tatarka.bindingcollectionadapter2.BR;
......@@ -22,28 +19,27 @@ public class CreditsExchangeActivity extends BaseActivity<ActivityCreditsExchang
public void initData() {
super.initData();
List<OrderBean> orderBeanList = new ArrayList<>();
viewModel.creditGoodsBeanList.observe(this, creditGoodsBeanList -> {
GridLayoutManager manager = new GridLayoutManager(this,2);
binding.rvAllGoodsList.setLayoutManager(manager);
//获取适配器上下文
CreditGoodsAdapter creditGoodsAdapter = new CreditGoodsAdapter(this);
//把adapterset进去
binding.rvAllGoodsList.setAdapter(creditGoodsAdapter);
creditGoodsAdapter.mList = orderBeanList;
creditGoodsAdapter.mList = creditGoodsBeanList;
creditGoodsAdapter.setOnItemClick((position, data) -> viewModel.goCreditsGoodsDetail(data.getBusinessId()));
});
viewModel.topCreditGoodsBeanList.observe(this, topCreditGoodsBeanList -> {
//获取适配器上下文
CreditGoodsSmallAdapter creditGoodsSmallAdapter = new CreditGoodsSmallAdapter(this);
GridLayoutManager manager1 = new GridLayoutManager(this,3);
binding.rvRecommendList.setLayoutManager(manager1);
//把adapterset进去
binding.rvRecommendList.setAdapter(creditGoodsSmallAdapter);
creditGoodsSmallAdapter.mList = orderBeanList;
creditGoodsSmallAdapter.setOnItemClick((position, data) -> viewModel.goCreditsGoodsDetail(position));
creditGoodsAdapter.setOnItemClick((position, data) -> viewModel.goCreditsGoodsDetail(position));
creditGoodsSmallAdapter.mList = topCreditGoodsBeanList;
creditGoodsSmallAdapter.setOnItemClick((position, data) -> viewModel.goCreditsGoodsDetail(data.getBusinessId()));
});
}
@Override
......@@ -56,4 +52,9 @@ public class CreditsExchangeActivity extends BaseActivity<ActivityCreditsExchang
return BR.creditsExchangeViewModel;
}
@Override
public CreditsExchangeViewModel initViewModel() {
CreditRequest lm = new CreditRequest();
return new CreditsExchangeViewModel(getApplication(), lm);
}
}
package com.xx.hbhconsumer.ui.credit;
import android.app.Application;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.xx.hbhconsumer.adapter.CreditGoodsSmallAdapter;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.data.http.requst.PhoneRequest;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean;
import com.xx.hbhconsumer.data.http.respons.CreditRecordBean;
import com.xx.hbhconsumer.ui.order.OrderDetailActivity;
import com.xx.xxviewlibrary.utils.AddImgAdapter;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.http.ApiDisposablePageObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
public class CreditsExchangeViewModel extends BaseViewModel<CreditRequest> {
public MutableLiveData<List<CreditGoodsBean>> creditGoodsBeanList = new MutableLiveData<>(new ArrayList<>());
public MutableLiveData<List<CreditGoodsBean>> topCreditGoodsBeanList = new MutableLiveData<>(new ArrayList<>());
public class CreditsExchangeViewModel extends BaseViewModel<PhoneRequest> {
public CreditsExchangeViewModel(@NonNull Application application) {
super(application);
}
public CreditsExchangeViewModel(@NonNull Application application, PhoneRequest model) {
public CreditsExchangeViewModel(@NonNull Application application, CreditRequest model) {
super(application, model);
}
public void goCreditsGoodsDetail(int position) {
startActivity(CreditsGoodsDetailActivity.class);
public void goCreditsGoodsDetail(String goodsId) {
Bundle bundle = new Bundle();
bundle.putString("goodsId", goodsId);
startActivity(CreditsGoodsDetailActivity.class, bundle);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
loadTopCreditGoodsList();
loadAllGoodsList();
}
private void loadAllGoodsList() {
model.getAllCreditGoodsList()
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(CreditsExchangeViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposablePageObserver<CreditGoodsBean>() {
@Override
public void onSuccess(List<CreditGoodsBean> resultBean) {
creditGoodsBeanList.postValue(resultBean);
}
@Override
public void onError(String Error) {
dismissDialog();
}
@Override
public void getTotal(int total) {
}
});
}
private void loadTopCreditGoodsList() {
model.getTopCreditGoodsList()
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(CreditsExchangeViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposablePageObserver<CreditGoodsBean>() {
@Override
public void onSuccess(List<CreditGoodsBean> resultBean) {
topCreditGoodsBeanList.postValue(resultBean);
}
@Override
public void onError(String Error) {
dismissDialog();
}
@Override
public void getTotal(int total) {
}
});
}
}
......@@ -3,7 +3,16 @@ package com.xx.hbhconsumer.ui.credit;
import android.os.Bundle;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.adapter.CreditAdapter;
import com.xx.hbhconsumer.adapter.ImageBannerAdapter;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.data.http.requst.OrderRequest;
import com.xx.hbhconsumer.databinding.ActivityCreditsGoodsDetailBinding;
import com.xx.hbhconsumer.ui.home.BannerAdapter;
import com.youth.banner.indicator.CircleIndicator;
import java.util.ArrayList;
import java.util.List;
import me.goldze.mvvmhabit.base.BaseActivity;
import me.tatarka.bindingcollectionadapter2.BR;
......@@ -14,6 +23,16 @@ public class CreditsGoodsDetailActivity extends BaseActivity<ActivityCreditsGood
public void initData() {
super.initData();
binding.bannerGoodsImg.addBannerLifecycleObserver(this).setIndicator(new CircleIndicator(this));
viewModel.creditGoodsDetailBean.observe(this, creditGoodsDetailBean -> {
if (creditGoodsDetailBean != null) {
ImageBannerAdapter bannerAdapter=new ImageBannerAdapter(this, creditGoodsDetailBean.getIntegralCommodityImageUrl());
binding.bannerGoodsImg.setAdapter(bannerAdapter);
binding.tvCreditNum.setText(String.valueOf(creditGoodsDetailBean.getCommodityPrice()));
binding.tvCreditGoodsName.setText(creditGoodsDetailBean.getIntegralCommodityName());
}
});
}
@Override
......@@ -26,4 +45,10 @@ public class CreditsGoodsDetailActivity extends BaseActivity<ActivityCreditsGood
return BR.creditsGoodsDetailViewModel;
}
@Override
public CreditsGoodsDetailViewModel initViewModel() {
CreditRequest lm = new CreditRequest();
String goodsId = getIntent().getStringExtra("goodsId");
return new CreditsGoodsDetailViewModel(getApplication(), lm, goodsId);
}
}
......@@ -4,20 +4,38 @@ import android.app.Application;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.data.http.requst.PhoneRequest;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsDetailBean;
import com.xx.hbhconsumer.ui.home.SignDialog;
import com.xx.xxviewlibrary.base.xxBaseDialog;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.http.ApiDisposablePageObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
public class CreditsGoodsDetailViewModel extends BaseViewModel<CreditRequest> {
private String goodsId;
public MutableLiveData<CreditGoodsDetailBean> creditGoodsDetailBean = new MutableLiveData<>(null);
public class CreditsGoodsDetailViewModel extends BaseViewModel<PhoneRequest> {
public CreditsGoodsDetailViewModel(@NonNull Application application) {
super(application);
}
public CreditsGoodsDetailViewModel(@NonNull Application application, PhoneRequest model) {
public CreditsGoodsDetailViewModel(@NonNull Application application, CreditRequest model, String goodsId) {
super(application, model);
this.goodsId = goodsId;
}
public void creditExchange(View view) {
......@@ -34,4 +52,42 @@ public class CreditsGoodsDetailViewModel extends BaseViewModel<PhoneRequest> {
CreditExchangeSuccessDialog dialog=new CreditExchangeSuccessDialog(view.getContext(), 1);
dialog.show();
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
loadGoodsDetail();
}
private void loadGoodsDetail() {
model.getCreditGoodsDetail(goodsId)
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(CreditsGoodsDetailViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<CreditGoodsDetailBean>() {
@Override
public void onSuccess(CreditGoodsDetailBean resultBean) {
creditGoodsDetailBean.postValue(resultBean);
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
}
......@@ -7,12 +7,9 @@ import androidx.recyclerview.widget.GridLayoutManager;
import com.xx.hbhconsumer.R;
import com.xx.hbhconsumer.adapter.CreditAdapter;
import com.xx.hbhconsumer.adapter.CreditGoodsAdapter;
import com.xx.hbhconsumer.data.http.respons.OrderBean;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.databinding.ActivityMyCreditBinding;
import java.util.ArrayList;
import java.util.List;
import me.goldze.mvvmhabit.base.BaseActivity;
import me.tatarka.bindingcollectionadapter2.BR;
......@@ -30,19 +27,28 @@ public class MyCreditActivity extends BaseActivity<ActivityMyCreditBinding, MyCr
@Override
public void initData() {
super.initData();
List<OrderBean> orderBeanList = new ArrayList<>();
viewModel.creditGoodsBeanList.observe(this, creditGoodsBeanList -> {
GridLayoutManager manager = new GridLayoutManager(this,2);
binding.rvCreditGoodsList.setLayoutManager(manager);
//获取适配器上下文
CreditGoodsAdapter creditGoodsAdapter = new CreditGoodsAdapter(this);
//把adapterset进去
binding.rvCreditGoodsList.setAdapter(creditGoodsAdapter);
creditGoodsAdapter.mList = orderBeanList;
creditGoodsAdapter.mList = creditGoodsBeanList;
});
viewModel.creditRecordBeanList.observe(this, creditRecordBeanList -> {
CreditAdapter creditAdapter = new CreditAdapter(this);
//把adapterset进去
binding.rvCreditList.setAdapter(creditAdapter);
creditAdapter.mList = orderBeanList;
creditAdapter.mList = creditRecordBeanList;
});
}
@Override
public MyCreditViewModel initViewModel() {
CreditRequest lm = new CreditRequest();
return new MyCreditViewModel(getApplication(), lm);
}
}
......@@ -3,23 +3,108 @@ package com.xx.hbhconsumer.ui.credit;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.xx.hbhconsumer.data.http.requst.PhoneRequest;
import com.xx.hbhconsumer.ui.order.OrderActivity;
import com.xx.hbhconsumer.data.http.requst.CreditRequest;
import com.xx.hbhconsumer.data.http.respons.CreditGoodsBean;
import com.xx.hbhconsumer.data.http.respons.CreditRecordBean;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.http.ApiDisposablePageObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
public class MyCreditViewModel extends BaseViewModel<CreditRequest> {
public MutableLiveData<List<CreditGoodsBean>> creditGoodsBeanList = new MutableLiveData<>(new ArrayList<>());
public MutableLiveData<List<CreditRecordBean>> creditRecordBeanList = new MutableLiveData<>(new ArrayList<>());
public class MyCreditViewModel extends BaseViewModel<PhoneRequest> {
public MyCreditViewModel(@NonNull Application application) {
super(application);
}
public MyCreditViewModel(@NonNull Application application, PhoneRequest model) {
public MyCreditViewModel(@NonNull Application application, CreditRequest model) {
super(application, model);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
loadGoodsList();
loadCreditRecordList();
}
private void loadCreditRecordList() {
model.getCreditRecordList(null, null, null)
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(MyCreditViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposablePageObserver<CreditRecordBean>() {
@Override
public void onSuccess(List<CreditRecordBean> resultBean) {
creditRecordBeanList.postValue(resultBean);
}
@Override
public void onError(String Error) {
dismissDialog();
}
@Override
public void getTotal(int total) {
}
});
}
private void loadGoodsList() {
model.getCreditGoodsList()
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(MyCreditViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposablePageObserver<CreditGoodsBean>() {
@Override
public void onSuccess(List<CreditGoodsBean> resultBean) {
creditGoodsBeanList.postValue(resultBean);
}
@Override
public void onError(String Error) {
dismissDialog();
}
@Override
public void getTotal(int total) {
}
});
}
public BindingCommand goCreditDetail = new BindingCommand(new BindingAction() {
@Override
public void call() {
......
......@@ -114,7 +114,6 @@
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:textColor="@color/white"
binding:onClickCommand="@{messageDetailViewModel.goHome}"
android:text="返回首页"
android:textSize="16sp"
android:textStyle="bold"
......
......@@ -86,16 +86,27 @@
app:tabBackground="@null"
app:tabRippleColor="@null"
app:tabPaddingBottom="4dp">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="26dp"
android:text="积分收入"
android:id="@+id/tab_credit_income"/>
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="26dp"
android:text="积分支出"
android:id="@+id/tab_credit_expenses"/>
</com.google.android.material.tabs.TabLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_credit_record_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_marginTop="19dp"
android:background="@drawable/bg_white_radius_12"
android:layout_below="@id/tabLayout" />
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
......
......@@ -66,7 +66,7 @@
android:layout_marginLeft="17dp"
android:layout_marginTop="31dp"
android:lineSpacingExtra="10dp"
android:text="为你推荐"
android:text="全部商品"
android:textColor="#FF333333"
android:textSize="20sp"
android:textStyle="bold" />
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:binding="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="creditListViewModel"
type="com.xx.hbhconsumer.ui.credit.CreditListViewModel" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_marginTop="19dp"
android:layout_marginBottom="24dp"
android:background="@drawable/bg_white_radius_12">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_order_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:orientation="vertical"
binding:layoutManager="@{LayoutManagers.linear(1,false)}"/>
</RelativeLayout>
</layout>
\ No newline at end of file
......@@ -5,8 +5,8 @@
<data>
<variable
name="orderBean"
type="com.xx.hbhconsumer.data.http.respons.OrderBean" />
name="creditRecordBean"
type="com.xx.hbhconsumer.data.http.respons.CreditRecordBean" />
</data>
<RelativeLayout
......
......@@ -5,8 +5,8 @@
<data>
<variable
name="orderBean"
type="com.xx.hbhconsumer.data.http.respons.OrderBean" />
name="creditGoodsBean"
type="com.xx.hbhconsumer.data.http.respons.CreditGoodsBean" />
</data>
<RelativeLayout
......@@ -33,6 +33,7 @@
/>
<TextView
android:id="@+id/tv_credit_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_goods_name"
......
......@@ -5,8 +5,8 @@
<data>
<variable
name="orderBean"
type="com.xx.hbhconsumer.data.http.respons.OrderBean" />
name="creditGoodsBean"
type="com.xx.hbhconsumer.data.http.respons.CreditGoodsBean" />
</data>
<RelativeLayout
......@@ -34,6 +34,7 @@
/>
<TextView
android:id="@+id/tv_credit_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_goods_name"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment