Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
cesarruelas
27,718 PointsRibbit Extra Credit Timestamp Label
I tried to make the extra credit option to show a secondary TextView with the timestamp in the MessageAdapter class. I included a SmallText TextView in the XML file and modified my MessageAdapter.java file to the following:
public class MessageAdapter extends ArrayAdapter<ParseObject> {
protected Context mContext;
protected List<ParseObject> mMessages;
public MessageAdapter(Context context, List<ParseObject> messages) {
super(context, R.layout.message_item, messages);
mContext = context;
mMessages = messages;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.message_item, null);
holder = new ViewHolder();
holder.iconImageView = (ImageView) convertView.findViewById(R.id.messageIcon);
holder.nameLabel = (TextView) convertView.findViewById(R.id.senderLabel);
holder.timestampLabel = (TextView) convertView.findViewById(R.id.timestampLabel);
} else {
holder = (ViewHolder) convertView.getTag();
}
ParseObject message = mMessages.get(position);
if (message.getString(ParseConstants.KEY_FILE_TYPE).equals(ParseConstants.TYPE_IMAGE)) {
holder.iconImageView.setImageResource(R.drawable.ic_action_picture);
} else {
holder.iconImageView.setImageResource(R.drawable.ic_action_play_over_video);
}
holder.nameLabel.setText(message.getString(ParseConstants.KEY_SENDER_NAME));
holder.timestampLabel.setText(message.getDate(ParseConstants.KEY_CREATED_AT).toString());
return convertView;
}
private static class ViewHolder {
ImageView iconImageView;
TextView nameLabel;
TextView timestampLabel;
}
}
but when I try to run the app, I get a NullPointerException at the line that says
holder.timestampLabel.setText(message.getDate(ParseConstants.KEY_CREATED_AT).toString());
I don't know why it would return null if the Parse.com backend clearly shows data in the createdAt Date field. Anyone successfully implemented this that could tell me where I went wrong? Thank you.