package de.bsd.zwitscher; import java.util.List; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Typeface; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import de.bsd.zwitscher.account.Account; import de.bsd.zwitscher.helper.SpannableBuilder; import de.bsd.zwitscher.helper.UserImageView; import twitter4j.Status; /** * Adapter for individual list rows of * the TweetList for Tweet objects (= query results) * * @author Heiko W. Rupp */ class TweetAdapter<T extends Status> extends AbstractAdapter<T> { public TweetAdapter(Context context, Account account, int textViewResourceId, List<T> objects) { super(context, textViewResourceId, objects); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; // Debug.startMethodTracing("sta"); // Use ViewHolder pattern to only inflate once if (convertView ==null) { convertView = inflater.inflate(R.layout.tweet_list_item,null); viewHolder = new ViewHolder(); viewHolder.iv = (UserImageView) convertView.findViewById(R.id.ListImageView); viewHolder.statusText = (TextView) convertView.findViewById(R.id.ListTextView); viewHolder.userInfo = (TextView) convertView.findViewById(R.id.ListUserView); viewHolder.timeClientInfo = (TextView) convertView.findViewById(R.id.ListTimeView); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if (position %2 == 0) convertView.setBackgroundColor(Color.BLACK); else convertView.setBackgroundColor(Color.DKGRAY); Status tweet = items.get(position); Bitmap bi; SpannableBuilder builder = new SpannableBuilder(extContext); String statusText; builder.append(tweet.getUser().getName(), Typeface.BOLD); /* TODO what is / was this? if (tweet.getRecipientScreenName()!=null) { builder.appendSpace(); builder.append(R.string.to,Typeface.NORMAL) .appendSpace() .append(tweet.getRecipientScreenName(), Typeface.BOLD); } */ statusText = tweet.getText(); bi = ph.getBitMapForScreenNameFromFile(tweet.getUser().getScreenName()); if (bi!=null) { viewHolder.iv.setImageBitmap(bi); } else { // underlying convertView seems to be reused, so default image is not loaded when bi==null viewHolder.iv.setImageBitmap(BitmapFactory.decodeResource(extContext.getResources(), R.drawable.user_unknown)); } viewHolder.userInfo.setText(builder.toSpannableString()); viewHolder.statusText.setText(statusText); String text = tweet.getCreatedAt().toString(); // TODO format viewHolder.timeClientInfo.setText((text)); //Debug.stopMethodTracing(); return convertView; } }