package com.ese2013.mensaunibe.menu; import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.RatingBar; import android.widget.TextView; import com.ese2013.mensaunibe.R; import com.ese2013.mensaunibe.model.menu.Rating; /** * @author group7 * @author Andreas Hohler */ public class RatingListAdapter extends BaseAdapter { private Context context; private int resource; private LayoutInflater inflater; private View baseView; private ArrayList<Rating> items = new ArrayList<Rating>(); public RatingListAdapter(Context context, int resource) { super(); this.context = context; this.resource = resource; } public void setBaseView(View view) { this.baseView = view; } public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if(view == null) { inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); ViewHolder viewHolder = new ViewHolder(); view = inflater.inflate(this.resource, parent, false); viewHolder.user = (TextView) view.findViewById(R.id.rating_user); viewHolder.text = (TextView) view.findViewById(R.id.rating_text); viewHolder.rating = (RatingBar) view.findViewById(R.id.rating_stars); view.setTag(viewHolder); } ViewHolder holder = (ViewHolder) view.getTag(); clearHolder(holder); Rating rating = items.get(position); holder.user.setText(rating.getDate()); holder.user.setVisibility(View.VISIBLE); if(rating.getText().length() > 1) { holder.text.setText(rating.getText()); holder.text.setVisibility(View.VISIBLE); } holder.rating.setRating(rating.getRating()); holder.rating.setVisibility(View.VISIBLE); return view; } /** * populates the Ratinng list with ratings * @param r: List of Ratings * @param avgStars: average rating */ public void populate(ArrayList<Rating> r, float avgStars) { assert avgStars <= 5 && avgStars >= 0; //fill items = new ArrayList<Rating>(); updateAvg(avgStars); for(Rating ra : r) { items.add(ra); } } private void updateAvg(float avg) { TextView avg_rating_text = (TextView) baseView.findViewById(R.id.rating_avg_text); RatingBar avg_rating = (RatingBar) baseView.findViewById(R.id.rating_avg); avg_rating_text.setVisibility(View.VISIBLE); avg_rating.setRating(avg); avg_rating.setVisibility(View.VISIBLE); } public Rating getItem(int position) { return items.get(position); } public long getItemId(int position) { return position; } public int getCount() { return items.size(); } static class ViewHolder { public TextView user; public TextView text; public RatingBar rating; } /** * Clears all the views and hide them * @param ViewHolder that holds all views */ private void clearHolder(ViewHolder holder) { holder.rating.setRating(0); holder.rating.setVisibility(View.GONE); holder.user.setText(""); holder.user.setVisibility(View.GONE); holder.text.setText(""); holder.text.setVisibility(View.GONE); } }