package com.oreilly.android.otweet.layouts; import java.net.URL; import com.oreilly.android.otweet.R; import com.oreilly.android.otweet.tasks.LoadImageAsyncTask; import com.oreilly.android.otweet.tasks.LoadImageAsyncTask.LoadImageAsyncTaskResponder; import twitter4j.Status; import twitter4j.User; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.util.AttributeSet; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; public class StatusListItem extends RelativeLayout implements LoadImageAsyncTaskResponder { private ImageView avatarView; private TextView screenName; private TextView statusText; private AsyncTask<URL, Void, Drawable> latestLoadTask; public StatusListItem(Context context, AttributeSet attrs) { super(context, attrs); } public void setStatus(Status status) { final User user = status.getUser(); findViews(); screenName.setText(user.getScreenName()); statusText.setText(status.getText()); // cancel old task if (null != latestLoadTask) { latestLoadTask.cancel(true); } latestLoadTask = new LoadImageAsyncTask(this).execute(user.getProfileImageURL()); } public void imageLoading() { avatarView.setImageDrawable(null); } public void imageLoadCancelled() { // do nothing } public void imageLoaded(Drawable drawable) { avatarView.setImageDrawable(drawable); } private void findViews() { avatarView = (ImageView) findViewById(R.id.user_avatar); screenName = (TextView) findViewById(R.id.status_user_name_text); statusText = (TextView) findViewById(R.id.status_text); } }