package com.yokmama.learn10.chapter06.lesson28;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class TodoListAdapter extends ArrayAdapter<Todo> {
/** フィールド */
private LayoutInflater mInflator;
public TodoListAdapter(Context context, List<Todo> objects) {
super(context, 0, objects);
mInflator = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflator.inflate(R.layout.item_list_row, parent, false);
holder = new ViewHolder();
holder.tvColorLabel = (TextView) convertView.findViewById(R.id.color_label);
holder.tvValue = (TextView) convertView.findViewById(R.id.value);
holder.tvCreatedTime = (TextView) convertView.findViewById(R.id.created_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//値をセット
String value = getItem(position).getValue();
if (!TextUtils.isEmpty(value)) {
holder.tvValue.setText(value);
}
//カラーラベルをセット
int color = getItem(position).getColorLabel();
holder.tvColorLabel.setBackgroundResource(getColorLabelResource(color));
if (!TextUtils.isEmpty(value)) {
holder.tvColorLabel.setText(value.substring(0, 1));
}
//日付をセット
String createdtime = getCreatedTime(getItem(position).getCreatedTime());
if (!TextUtils.isEmpty(createdtime)) {
holder.tvCreatedTime.setText(createdtime);
}
return convertView;
}
/**
* 現在年月をDate型返却.
*/
public static String getCreatedTime(long createdTime) {
Date date = new Date(createdTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/HH:mm");
return sdf.format(date);
}
/**
* カラーラベルのdrawableリソースIDを返却.
*
* @param color : カラー
*/
private int getColorLabelResource(int color) {
int resId = R.drawable.bg_colorlabel_grey;
switch (color) {
case Todo.ColorLabel.PINK:
resId = R.drawable.bg_colorlabel_pink;
break;
case Todo.ColorLabel.INDIGO:
resId = R.drawable.bg_colorlabel_indigo;
break;
case Todo.ColorLabel.GREEN:
resId = R.drawable.bg_colorlabel_green;
break;
case Todo.ColorLabel.AMBER:
resId = R.drawable.bg_colorlabel_amber;
break;
}
return resId;
}
private class ViewHolder {
TextView tvColorLabel;
TextView tvCreatedTime;
TextView tvValue;
}
}