package info.justaway.adapter.main;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.Bind;
import info.justaway.R;
import info.justaway.model.AccessTokenManager;
import info.justaway.model.UserIconManager;
import twitter4j.auth.AccessToken;
public class AccessTokenAdapter extends ArrayAdapter<AccessToken> {
static class ViewHolder {
@Bind(R.id.icon) ImageView mIcon;
@Bind(R.id.screen_name) TextView mScreenName;
public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
private LayoutInflater mInflater;
private int mLayout;
private int mHighlightColor;
private int mDefaultColor;
public AccessTokenAdapter(Context context, int textViewResourceId, int highlightColor, int defaultColor) {
super(context, textViewResourceId);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mLayout = textViewResourceId;
mHighlightColor = highlightColor;
mDefaultColor = defaultColor;
ArrayList<AccessToken> accessTokens = AccessTokenManager.getAccessTokens();
if (accessTokens != null) {
for (AccessToken accessToken : accessTokens) {
add(accessToken);
}
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
// ビューを受け取る
View view = convertView;
if (view == null) {
// 受け取ったビューがnullなら新しくビューを生成
view = mInflater.inflate(this.mLayout, null);
if (view == null) {
return null;
}
holder = new ViewHolder(view);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
AccessToken accessToken = getItem(position);
UserIconManager.displayUserIcon(accessToken.getUserId(), holder.mIcon);
holder.mScreenName.setText(accessToken.getScreenName());
/**
* 使用中のアカウントはハイライト表示
*/
if (AccessTokenManager.getUserId() == accessToken.getUserId()) {
holder.mScreenName.setTextColor(mHighlightColor);
} else {
holder.mScreenName.setTextColor(mDefaultColor);
}
return view;
}
}