package com.yuukidach.ucount.model; import android.support.percent.PercentRelativeLayout; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.yuukidach.ucount.GlobalVariables; import com.yuukidach.ucount.R; import org.litepal.crud.DataSupport; import java.text.DecimalFormat; import java.util.List; /** * Created by yuukidach on 17-3-10. */ public class IOItemAdapter extends RecyclerView.Adapter<IOItemAdapter.ViewHolder> { private static final String TAG = "IOItemAdapter"; private final int TYPE_COST = -1; private final int TYPE_EARN = 1; private List<IOItem> mIOItemList; private String mDate; public DecimalFormat decimalFormat = new DecimalFormat("0.00"); static class ViewHolder extends RecyclerView.ViewHolder { PercentRelativeLayout earnLayout, costLayout; RelativeLayout dateBar; ImageView itemImageEarn, itemImageCost; TextView itemNameEarn, itemNameCost; TextView itemMoneyEarn, itemMoneyCost; TextView itemDspEarn, itemDspCost; TextView itemDate; public ViewHolder(View view) { super(view); earnLayout = (PercentRelativeLayout) view.findViewById(R.id.earn_left_layout); costLayout = (PercentRelativeLayout) view.findViewById(R.id.cost_right_layout); dateBar = (RelativeLayout) view.findViewById(R.id.date_bar); itemImageEarn = (ImageView) view.findViewById(R.id.earn_item_img_main); itemImageCost = (ImageView) view.findViewById(R.id.cost_item_img_main); itemNameEarn = (TextView ) view.findViewById(R.id.earn_item_name_main); itemNameCost = (TextView ) view.findViewById(R.id.cost_item_name_main); itemMoneyEarn = (TextView ) view.findViewById(R.id.earn_item_money_main); itemMoneyCost = (TextView ) view.findViewById(R.id.cost_item_money_main); itemDspEarn = (TextView ) view.findViewById(R.id.earn_item_decription); itemDspCost = (TextView ) view.findViewById(R.id.cost_item_decription); itemDate = (TextView ) view.findViewById(R.id.iotem_date); } } public IOItemAdapter(List<IOItem> ioItemList) { mIOItemList = ioItemList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.d(TAG, "onCreateViewHolder: "); View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.io_item, parent ,false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { IOItem ioItem = mIOItemList.get(position); showItemDate(holder, ioItem.getTimeStamp()); // 表示支出的布局 if (ioItem.getType() == TYPE_COST) { // -1代表支出 holder.earnLayout.setVisibility(View.GONE); holder.costLayout.setVisibility(View.VISIBLE); holder.itemImageCost.setImageResource(ioItem.getSrcId()); holder.itemNameCost.setText(ioItem.getName()); holder.itemMoneyCost.setText(decimalFormat.format(ioItem.getMoney())); handleDescription(ioItem, holder.itemDspCost, holder.itemNameCost, holder.itemMoneyCost); //表示收入的布局 } else if (ioItem.getType() == TYPE_EARN) { holder.earnLayout.setVisibility(View.VISIBLE); holder.costLayout.setVisibility(View.GONE); holder.itemImageEarn.setImageResource(ioItem.getSrcId()); holder.itemNameEarn.setText(ioItem.getName()); holder.itemMoneyEarn.setText(decimalFormat.format(ioItem.getMoney())); handleDescription(ioItem, holder.itemDspEarn, holder.itemNameEarn, holder.itemMoneyEarn); } } @Override public int getItemCount() { return mIOItemList.size(); } // 利用全局变量进行判定 public void showItemDate(ViewHolder holder, String Date) { if (GlobalVariables.getmDate().equals(Date)) holder.dateBar.setVisibility(View.GONE); else { holder.dateBar.setVisibility(View.VISIBLE); holder.itemDate.setText(Date); GlobalVariables.setmDate(Date); Log.d(TAG, "showItemDate: "+Date); } } // 返回子项目时间,便于在取消删除的时候判断是否应该显示项目时间 public String getItemDate(int position) { IOItem ioItem = mIOItemList.get(position); return ioItem.getTimeStamp(); } public void removeItem(int position) { IOItem ioItem = mIOItemList.get(position); BookItem bookItem = DataSupport.find(BookItem.class, GlobalVariables.getmBookId()); int type = ioItem.getType(); bookItem.setSumAll(bookItem.getSumAll() - ioItem.getMoney()*type); // 判断收支类型 if (type < 0) bookItem.setSumMonthlyCost(bookItem.getSumMonthlyCost() - ioItem.getMoney()); else bookItem.setSumMonthlyEarn(bookItem.getSumMonthlyEarn() - ioItem.getMoney()); bookItem.save(); DataSupport.delete(IOItem.class, mIOItemList.get(position).getId()); mIOItemList.remove(position); notifyItemRemoved(position); } public boolean isThereADescription(IOItem ioItem) { return (ioItem.getDescription()!=null && !ioItem.getDescription().equals("")); } public void handleDescription(IOItem ioItem, TextView Dsp, TextView Name, TextView Money) { if (isThereADescription(ioItem)) { RelativeLayout.LayoutParams nameParams = (RelativeLayout.LayoutParams)Name.getLayoutParams(); nameParams.removeRule(RelativeLayout.CENTER_VERTICAL); RelativeLayout.LayoutParams moneyParams = (RelativeLayout.LayoutParams)Money.getLayoutParams(); moneyParams.removeRule(RelativeLayout.CENTER_VERTICAL); Dsp.setText(ioItem.getDescription()); Name.setLayoutParams(nameParams); Money.setLayoutParams(moneyParams); } else { Dsp.setVisibility(View.GONE); } } }