Skip to content

Instantly share code, notes, and snippets.

@jpotts18
Created October 7, 2013 03:53
Show Gist options
  • Save jpotts18/6862316 to your computer and use it in GitHub Desktop.
Save jpotts18/6862316 to your computer and use it in GitHub Desktop.
Timeline with View holder
public class TimeLineAdapter extends ArrayAdapter {
private final DailyInput dailyInput;
private LayoutInflater mInflater;
List<TimelineObject> timelineList = new ArrayList<TimelineObject>();
private Context mContext;
private final int TYPE_MESSAGE = 1;
private final int TYPE_ACTIVITY = 2;
private final int TYPE_MEAL = 3;
private final int TYPE_DAILY_INPUT = 4;
private final int TYPE_DRINK = 5;
public static class MealViewHolder{
TextView mealTime;
ImageView mealImage;
TextView mealPortion;
TextView mealDescription;
TextView mealPremeal;
TextView mealPremealKey;
TextView mealPostMeal;
TextView mealPostMealKey;
TextView mealMood;
TextView mealMoodKey;
}
@SuppressWarnings("unchecked")
public TimeLineAdapter(Context mContext, int textViewResourceId, List<TimelineObject> timelineList, DailyInput dailyInput) {
super(mContext,textViewResourceId,timelineList);
this.timelineList = timelineList;
this.dailyInput = dailyInput;
this.mContext = mContext;
this.mInflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getItemViewType(int position) {
int typeId = 0;
if(timelineList.get(position) instanceof Message){
typeId = TYPE_MESSAGE;
}
if(timelineList.get(position) instanceof PhysicalActivity){
typeId = TYPE_ACTIVITY;
}
if(timelineList.get(position) instanceof GetOnlyMeal){
typeId = TYPE_MEAL;
}
if(timelineList.get(position) instanceof Hydration){
typeId = TYPE_DRINK;
}
return typeId;
}
@SuppressLint("ResourceAsColor")
public View getView(int position, View convertView, ViewGroup parent) {
View returnView = null;
if(position == 0){
if(dailyInput == null){
RelativeLayout row = (RelativeLayout) View.inflate(mContext, R.layout.partial_timeline_daily_inputs_missing, null);
return row;
} else {
LinearLayout row = createParameters();
return row;
}
}
switch (getItemViewType(position)){
case TYPE_MEAL:
MealViewHolder mealViewHolder;
GetOnlyMeal m = (GetOnlyMeal) timelineList.get(position);
if(convertView == null){
convertView = mInflater.inflate(R.layout.partial_timeline_meal, null);
mealViewHolder = new MealViewHolder();
mealViewHolder.mealTime = (TextView) convertView.findViewById(R.id.timeline_meal_time);
mealViewHolder.mealImage = (ImageView) convertView.findViewById(R.id.timeline_meal_image);
mealViewHolder.mealPortion = (TextView) convertView.findViewById(R.id.timeline_meal_portion);
mealViewHolder.mealDescription = (TextView) convertView.findViewById(R.id.timeline_meal_description);
mealViewHolder.mealPremeal = (TextView) convertView.findViewById(R.id.timeline_meal_premeal);
mealViewHolder.mealMood = (TextView) convertView.findViewById(R.id.timeline_meal_mood);
mealViewHolder.mealPostMeal = (TextView) convertView.findViewById(R.id.timeline_meal_postmeal);
mealViewHolder.mealPremealKey = (TextView) convertView.findViewById(R.id.timeline_meal_postmeal_key);
mealViewHolder.mealMoodKey = (TextView) convertView.findViewById(R.id.timeline_meal_postmeal_key);
mealViewHolder.mealPostMealKey = (TextView) convertView.findViewById(R.id.timeline_meal_postmeal_key);
convertView.setTag(mealViewHolder);
} else {
mealViewHolder = (MealViewHolder) convertView.getTag();
}
ImageLoader.getInstance().displayImage(
m.getPhoto().getUrl(),
mealViewHolder.mealImage,
new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.no_photo)
.showImageOnFail(R.drawable.no_photo)
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
.cacheOnDisc(true)
.build(),
new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
// view.startAnimation(AnimationUtils.loadAnimation(TimelineActivity.this, R.anim.fade_in));
}
}
);
mealViewHolder.mealTime.setText(m.getHumanTime());
mealViewHolder.mealPortion.setText(Integer.toString(m.getPortionConsumed()) + "/4");
mealViewHolder. mealDescription.setText(m.getDescription());
// Hide or show optional data
if(m.getPostMealFullness() != null){
mealViewHolder.mealPostMeal.setText(m.getPreMealHunger().getDescription());
} else {
convertView.findViewById(R.id.timeline_meal_postmeal_key).setVisibility(View.GONE);
mealViewHolder.mealPostMeal.setVisibility(View.GONE);
}
if(m.getPreMealHunger() != null){
mealViewHolder.mealPremeal.setText(m.getPostMealFullness().getDescription());
} else {
mealViewHolder.mealPremealKey.setVisibility(View.GONE);
mealViewHolder.mealPremeal.setVisibility(View.GONE);
}
if(m.getMood() != null){
mealViewHolder.mealMood.setText(m.getMood().getDescription());
} else {
mealViewHolder.mealMoodKey.setVisibility(View.GONE);
mealViewHolder.mealMood.setVisibility(View.GONE);
}
returnView = convertView;
break;
case TYPE_ACTIVITY:
break;
case TYPE_DAILY_INPUT:
break;
case TYPE_DRINK:
break;
case TYPE_MESSAGE:
break;
default:
break;
}
return returnView;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment