package what.whatandroid.announcements;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import api.announcements.Announcement;
import what.whatandroid.R;
import what.whatandroid.callbacks.ViewAnnouncementCallbacks;
import java.util.List;
/**
* List adapter for the Announcments fragment
*/
public class AnnouncementsAdapter extends ArrayAdapter<Announcement> implements AdapterView.OnItemClickListener {
private final LayoutInflater inflater;
/**
* The announcement activity interface so we can select an announcement to show
* a detail view of
*/
ViewAnnouncementCallbacks callbacks;
/**
* Construct the adapter and assign the list of announcements to view
*
* @param context application context for the adapter
* @param objects the objects to display
*/
public AnnouncementsAdapter(Context context, List<Announcement> objects, ViewAnnouncementCallbacks callbacks){
super(context, R.layout.list_announcement, objects);
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.callbacks = callbacks;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if (convertView != null){
holder = (ViewHolder)convertView.getTag();
}
//We need to setup a new view
else {
convertView = inflater.inflate(R.layout.list_announcement, parent, false);
holder = new ViewHolder();
holder.title = (TextView)convertView.findViewById(R.id.announcement_title);
holder.date = (TextView)convertView.findViewById(R.id.announcement_date);
holder.snippet = (TextView)convertView.findViewById(R.id.announcement_snippet);
convertView.setTag(holder);
}
Announcement a = getItem(position);
holder.title.setText(a.getTitle());
//TODO: Prettier formatting for newstime maybe? Fuzzy time?
holder.date.setText(a.getNewsTime());
//holder.snippet.setText(a.getBody());
holder.snippet.setText("Empty");
return convertView;
}
/**
* When an announcement is clicked we want to show a detail view of it that shows
* the full announcement text
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
callbacks.viewAnnouncement(getItem(position));
}
/**
* View holder for Announcements for quicker look-ups of views
*/
private static class ViewHolder {
public TextView title, date, snippet;
}
}