package com.example.twitterclient.adapters;
import android.content.Context;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.twitterclient.R;
import com.example.twitterclient.models.Tweet;
import com.example.twitterclient.models.User;
import com.example.twitterclient.utils.HandlesErrors;
import com.nostra13.universalimageloader.core.ImageLoader;
/**
* Created on 10/20/13.
*/
public class TweetListAdapter extends ArrayAdapter<Tweet> {
private static final int tweetResource = R.layout.view_tweet;
private static final String tweetDateFormat = "h:ma, MMMMM d yyyy";
public static interface HandlesTweet extends HandlesErrors {
public User getCurrentUser();
public void onProfileClick(User user);
public void onReplyClick(Tweet tweet);
}
final HandlesTweet tweetHandler;
public TweetListAdapter(Context context, HandlesTweet tweetHandler) {
super(context, tweetResource);
this.tweetHandler = tweetHandler;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Tweet tweet = this.getItem(position);
if (convertView == null) // only create the view if not recycling
convertView = LayoutInflater.from(getContext()).inflate(tweetResource, parent, false);
if (convertView == null) {
tweetHandler.onError(new InflateException("Unable to inflate tweet view"));
return null;
}
final User user = tweet.getUser();
ImageView ivProfile = (ImageView) convertView.findViewById(R.id.ivProfile);
ImageLoader.getInstance().displayImage(user.profile_image_url, ivProfile);
ivProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tweetHandler.onProfileClick(user);
}
});
TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
tvName.setText(user.getSpannedName());
TextView tvDate = (TextView) convertView.findViewById(R.id.tvDate);
tvDate.setText(tweet.getSpannedDate(tweetDateFormat));
TextView tvReply = (TextView) convertView.findViewById(R.id.tvReply);
if (tweetHandler.getCurrentUser().user_id.equals(user.user_id)) {
tvReply.setVisibility(View.INVISIBLE);
} else {
tvReply.setVisibility(View.VISIBLE);
tvReply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tweetHandler.onReplyClick(tweet);
}
});
}
TextView tvBody = (TextView) convertView.findViewById(R.id.tvBody);
tvBody.setText(tweet.getSpannedText());
return convertView;
}
}