package com.athena.asm.Adapter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import android.content.Context;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.SectionIndexer;
import android.widget.TextView;
import com.athena.asm.R;
import com.athena.asm.aSMApplication;
import com.athena.asm.data.Board;
public class CategoryListAdapter extends ArrayAdapter<Board> implements SectionIndexer{
private HashMap<String, Integer> alphaIndexer;
private String[] sections;
private LayoutInflater m_inflater;
private List<Board> m_boards;
public CategoryListAdapter(Context context, int textViewResourceId, List<Board> data, LayoutInflater inflater) {
super(context, textViewResourceId, data);
m_boards = data;
m_inflater = inflater;
alphaIndexer = new HashMap<String, Integer>();
for (int i = 0; i < data.size(); i++)
{
String s = data.get(i).getEngName().substring(0, 1).toUpperCase();
if (!alphaIndexer.containsKey(s))
alphaIndexer.put(s, i);
}
Set<String> sectionLetters = alphaIndexer.keySet();
ArrayList<String> sectionList = new ArrayList<String>(sectionLetters);
Collections.sort(sectionList);
sections = sectionList.toArray(new String[sectionList.size()]);
}
public class ViewHolder {
public TextView categoryNameTextView;
public TextView moderatorIDTextView;
public TextView boardNameTextView;
public Board board;
}
public View getView(int position, View convertView, ViewGroup parent) {
Board board = m_boards.get(position);
View layout = null;
ViewHolder holder;
if (convertView != null) {
layout = convertView;
holder = (ViewHolder)layout.getTag();
} else {
layout = m_inflater.inflate(R.layout.category_list_item, null);
holder = new ViewHolder();
holder.categoryNameTextView = (TextView) layout.findViewById(R.id.CategoryName);
holder.moderatorIDTextView = (TextView) layout.findViewById(R.id.ModeratorID);
holder.boardNameTextView = (TextView) layout.findViewById(R.id.BoardName);
holder.boardNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, aSMApplication.getCurrentApplication().getGuidanceSecondFontSize());
if (aSMApplication.getCurrentApplication().isNightTheme()) {
holder.categoryNameTextView.setTextColor(layout.getResources().getColor(
R.color.status_text_night));
holder.moderatorIDTextView.setTextColor(layout.getResources().getColor(
R.color.status_text_night));
holder.boardNameTextView.setTextColor(layout.getResources().getColor(
R.color.status_text_night));
}
layout.setTag(holder);
}
holder.board = board;
holder.categoryNameTextView.setText(board.getCategoryName());
holder.moderatorIDTextView.setText(board.getModerator());
holder.boardNameTextView.setText("[" + board.getEngName() + "]"
+ board.getChsName());
return layout;
}
@Override
public int getCount() {
return m_boards.size();
}
@Override
public Board getItem(int position) {
return m_boards.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getPositionForSection(int section) {
// TODO Auto-generated method stub
return alphaIndexer.get(sections[section]);
}
@Override
public int getSectionForPosition(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object[] getSections() {
// TODO Auto-generated method stub
return sections;
}
}