package cn.edu.zstu.sunshine.tools.campuscard; import android.content.Context; import android.databinding.ObservableField; import android.databinding.ViewDataBinding; import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.view.View; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.orhanobut.logger.Logger; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import cn.edu.zstu.sunshine.BR; import cn.edu.zstu.sunshine.R; import cn.edu.zstu.sunshine.base.Api; import cn.edu.zstu.sunshine.base.AppConfig; import cn.edu.zstu.sunshine.base.BaseAdapter; import cn.edu.zstu.sunshine.base.BaseViewModel; import cn.edu.zstu.sunshine.databinding.ActivityCampusCardBinding; import cn.edu.zstu.sunshine.databinding.DialogMonthBinding; import cn.edu.zstu.sunshine.databinding.ItemMonthBinding; import cn.edu.zstu.sunshine.entity.CampusCard; import cn.edu.zstu.sunshine.entity.JsonParse; import cn.edu.zstu.sunshine.greendao.CampusCardDao; import cn.edu.zstu.sunshine.utils.DaoUtil; import cn.edu.zstu.sunshine.utils.DateUtil; import cn.edu.zstu.sunshine.utils.DialogUtil; /** * 校园卡消费记录的VM * Created by CooLoongWu on 2017-8-29 11:27. */ public class CampusCardViewModel extends BaseViewModel<CampusCard> { public ObservableField<String> expenses; //本月累计消费金额 public ObservableField<String> balance; //余额 public ObservableField<Integer> month; //月份 protected CampusCardViewModel(Context context, ViewDataBinding binding) { super(context, binding); } @Override protected JsonParse<List<CampusCard>> parseStrToJson(String data) { return JSON.parseObject( data, new TypeReference<JsonParse<List<CampusCard>>>() { } ); } @Override public void beforeInit() { //不知道为什么不可以在类中初始化 month = new ObservableField<>(); expenses = new ObservableField<>(); balance = new ObservableField<>(); month.set(DateUtil.getCurrentMonth()); } @Override protected String loadUrl() { return Api.URL_CAMPUSCARD; } /** * 加载本地当月消费数据【按照日期降序排列】 */ protected List<CampusCard> loadDataFromLocal() { return DaoUtil.getInstance().getSession().getCampusCardDao() .queryBuilder() .where( CampusCardDao.Properties.UserId.eq(AppConfig.getDefaultUserId()), CampusCardDao.Properties.Year.eq(DateUtil.getCurrentYear()), CampusCardDao.Properties.Month.eq(month.get()) ) .orderDesc(CampusCardDao.Properties.Time) .build() .list(); } /** * 加载数据到视图 */ protected void loadDataIntoView() { showEmptyView.set(data.size() <= 0); ActivityCampusCardBinding campusCardBinding = (ActivityCampusCardBinding) binding; if (campusCardBinding.include.recyclerView.getAdapter() != null) { campusCardBinding.include.recyclerView.getAdapter().notifyDataSetChanged(); } BigDecimal bigDecimal = new BigDecimal("0"); for (CampusCard ca : data) { bigDecimal = new BigDecimal( bigDecimal.add(new BigDecimal(Double.toString(ca.getConsumption()))).toString() ); } expenses.set(bigDecimal.toString()); balance.set("45"); } public void onBtnSelectMonthClick(View view) { final List<String> months = new ArrayList<>(); for (int i = 0; i < 12; i++) { months.add(String.valueOf(i + 1)); } new DialogUtil(context) .setLayout(R.layout.dialog_month) .setTitle("请选择查询的月份") .onSetViewListener(new DialogUtil.IonSetViewListener() { @Override public void setView(ViewDataBinding binding, final AlertDialog dialog) { Logger.e("执行了"); ((DialogMonthBinding) binding).include.recyclerView.setLayoutManager(new GridLayoutManager(context, 4)); ((DialogMonthBinding) binding).include.recyclerView.setVerticalScrollBarEnabled(false); ((DialogMonthBinding) binding).include.recyclerView.setAdapter( new BaseAdapter<>(R.layout.item_month, BR.month, months) .setOnItemHandler(new BaseAdapter.OnItemHandler() { @Override public void onItemHandler(final ViewDataBinding viewDataBinding, final int position) { ((ItemMonthBinding) viewDataBinding).layoutItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Logger.e("点击了" + (position + 1) + "月"); month.set(position + 1); init(); dialog.dismiss(); } }); } }) ); } }) .build() .show(); } }