package com.code44.finance.ui.accounts; import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.code44.finance.R; import com.code44.finance.data.model.Account; import com.code44.finance.data.model.Currency; import com.code44.finance.ui.common.BaseModelsAdapter; import com.code44.finance.utils.MoneyFormatter; public class AccountsAdapter extends BaseModelsAdapter { private final Currency defaultCurrency; private final int includeInTotalsTextColor; private final int doNotIncludeInTotalsTextColor; public AccountsAdapter(Context context, Currency defaultCurrency) { super(context); this.defaultCurrency = defaultCurrency; includeInTotalsTextColor = context.getResources().getColor(R.color.text_primary); doNotIncludeInTotalsTextColor = context.getResources().getColor(R.color.text_secondary); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final View view = LayoutInflater.from(context).inflate(R.layout.li_account, parent, false); ViewHolder.setAsTag(view); return view; } @Override public void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = (ViewHolder) view.getTag(); final Account account = Account.from(cursor); holder.title_TV.setText(account.getTitle()); holder.balance_TV.setText(MoneyFormatter.format(account.getCurrency(), account.getBalance())); holder.balance_TV.setTextColor(account.includeInTotals() ? includeInTotalsTextColor : doNotIncludeInTotalsTextColor); if (account.getCurrency().getId().equals(defaultCurrency.getId())) { holder.mainCurrencyBalance_TV.setVisibility(View.GONE); } else { holder.mainCurrencyBalance_TV.setVisibility(View.VISIBLE); holder.mainCurrencyBalance_TV.setText(MoneyFormatter.format(defaultCurrency, (long) (account.getBalance() * account.getCurrency().getExchangeRate()))); } } private static class ViewHolder { public TextView title_TV; public TextView balance_TV; public TextView mainCurrencyBalance_TV; public static ViewHolder setAsTag(View view) { final ViewHolder holder = new ViewHolder(); holder.title_TV = (TextView) view.findViewById(R.id.titleTextView); holder.balance_TV = (TextView) view.findViewById(R.id.balanceTextView); holder.mainCurrencyBalance_TV = (TextView) view.findViewById(R.id.mainCurrencyBalanceTextView); view.setTag(holder); return holder; } } }