package hk.reality.stock.view;
import hk.reality.stock.R;
import hk.reality.stock.model.Stock;
import hk.reality.stock.model.StockDetail;
import hk.reality.utils.PriceFormatter;
import java.util.Comparator;
import org.apache.commons.lang.StringUtils;
import android.content.Context;
import android.graphics.Color;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class StockAdapter extends ArrayAdapter<Stock> {
private java.text.DateFormat formatter;
public StockAdapter(Context context) {
super(context, 0);
formatter = DateFormat.getTimeFormat(context);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
View v = view;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = (View) vi.inflate(R.layout.stock_item, null);
}
// prepare views
TextView name = (TextView) v.findViewById(R.id.name);
TextView quote = (TextView) v.findViewById(R.id.quote);
TextView price = (TextView) v.findViewById(R.id.price);
TextView change = (TextView) v.findViewById(R.id.change);
TextView volume = (TextView) v.findViewById(R.id.volume);
TextView time = (TextView) v.findViewById(R.id.time);
// set data
Stock stock = getItem(position);
StockDetail detail = stock.getDetail();
if (detail != null) {
time.setText(formatter.format(detail.getUpdatedAt().getTime()));
volume.setText(detail.getVolume());
name.setText(stock.getName());
quote.setText(detail.getQuote());
price.setText(PriceFormatter.forPrice(detail.getPrice().doubleValue()));
change.setText(String.format("%s (%s)",
PriceFormatter.forPrice(detail.getChangePrice().doubleValue()),
PriceFormatter.forPercent(detail.getChangePricePercent().doubleValue())));
if (detail.getChangePrice().floatValue() > 0) {
price.setTextColor(Color.rgb(0, 213, 65));
change.setTextColor(Color.rgb(0, 213, 65));
} else if (detail.getChangePrice().floatValue() < 0) {
price.setTextColor(Color.rgb(238, 30, 0));
change.setTextColor(Color.rgb(238, 30, 0));
} else {
price.setTextColor(Color.WHITE);
change.setTextColor(Color.WHITE);
}
} else {
time.setText("");
volume.setText("---");
name.setText(stock.getName());
quote.setText(stock.getQuote());
price.setText("----");
change.setText("---- (---)");
}
return v;
}
public static class StockQuoteSorter implements Comparator<Stock> {
@Override
public int compare(Stock s1, Stock s2) {
String q1 = s1.getQuote();
String q2 = s2.getQuote();
if (StringUtils.isNotEmpty(q1) && StringUtils.isNotEmpty(q2)) {
return Integer.parseInt(q1) - Integer.parseInt(q2);
} else {
return 0;
}
}
}
}