package de.bsd.zwitscher; import android.content.Context; import android.graphics.Color; import android.util.Log; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import java.util.List; /** * Adapter for items of the list_of_list_line_item layout * Items are name of the list + count of unread items */ class ListOfListLineItemAdapter extends ArrayAdapter<Pair<String,Integer>> { List<Pair<String,Integer>> items; Context extContext; LayoutInflater inflater; ListOfListLineItemAdapter(Context context, int textViewResourceId, List<Pair<String,Integer>> objects) { super(context, textViewResourceId, objects); extContext = context; inflater = (LayoutInflater) extContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); items = objects; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; // Use ViewHolder pattern to only inflate once if (convertView ==null) { convertView = inflater.inflate(R.layout.list_of_list_line_item,parent,false); viewHolder = new ViewHolder(); viewHolder.countView = (TextView) convertView.findViewById(R.id.count); viewHolder.nameView = (TextView) convertView.findViewById(R.id.name); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if (position %2 == 0) convertView.setBackgroundColor(Color.BLACK); else convertView.setBackgroundColor(Color.DKGRAY); Pair<String,Integer> response = items.get(position); viewHolder.nameView.setText(response.first); if (response.second!=null && response.second>0) viewHolder.countView.setText(""+response.second); else viewHolder.countView.setText(""); return convertView; } void setCountForItem(int item,int count) { if (item > items.size()) { Log.e("ListoIfListLineAdapter", "req item " + item + " > size: " + items.size() ); return; } Pair<String,Integer> pair = items.get(item); Pair<String,Integer> p2 = new Pair<String,Integer>(pair.first,count); items.set(item,p2); } public int getUnreadCountForPosition(int position) { Pair<String,Integer> item = items.get(position); return item.second; } static class ViewHolder { TextView nameView; TextView countView; } }