package com.code44.finance.ui.categories; import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.code44.finance.R; import com.code44.finance.common.model.TransactionType; import com.code44.finance.data.model.Category; import com.code44.finance.ui.common.BaseModelsAdapter; import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter; public class CategoriesAdapter extends BaseModelsAdapter implements StickyListHeadersAdapter { public CategoriesAdapter(Context context) { super(context); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final View view = LayoutInflater.from(context).inflate(R.layout.li_category, parent, false); ViewHolder.setAsTag(view); return view; } @Override public void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = (ViewHolder) view.getTag(); final Category category = Category.from(cursor); holder.colorImageView.setColorFilter(category.getColor()); holder.titleTextView.setText(category.getTitle()); } @Override public View getHeaderView(int position, View convertView, ViewGroup parent) { mCursor.moveToPosition(position); final HeaderViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.li_category_header, parent, false); holder = HeaderViewHolder.setAsTag(convertView); } else { holder = (HeaderViewHolder) convertView.getTag(); } holder.titleTextView.setText(mContext.getString(Category.from(mCursor).getTransactionType() == TransactionType.Expense ? R.string.expenses : R.string.income)); return convertView; } @Override public long getHeaderId(int position) { mCursor.moveToPosition(position); return Category.from(mCursor).getTransactionType().ordinal(); } private static class ViewHolder { public ImageView colorImageView; public TextView titleTextView; public static ViewHolder setAsTag(View view) { final ViewHolder holder = new ViewHolder(); holder.colorImageView = (ImageView) view.findViewById(R.id.colorImageView); holder.titleTextView = (TextView) view.findViewById(R.id.titleTextView); view.setTag(holder); return holder; } } private static class HeaderViewHolder { public TextView titleTextView; public static HeaderViewHolder setAsTag(View view) { final HeaderViewHolder holder = new HeaderViewHolder(); holder.titleTextView = (TextView) view.findViewById(R.id.titleTextView); view.setTag(holder); return holder; } } }