@Override public View getView(final int position, final View convertView, final ViewGroup parent) { final View view = convertView != null ? convertView : mInflater.inflate(R.layout.activity_list_item, null); final Object tag = view.getTag(); final ActivityViewHolder holder = tag instanceof ActivityViewHolder ? (ActivityViewHolder) tag : new ActivityViewHolder(view); if (!(tag instanceof ActivityViewHolder)) { view.setTag(holder); } holder.reset(); holder.setTextSize(mTextSize); final twitter4j.Activity item = getItem(position); final Date created_at = item.getCreatedAt(); if (created_at != null) { if (mShowAbsoluteTime) { holder.time.setText(formatSameDayTime(mContext, created_at.getTime())); } else { holder.time.setText(getRelativeTimeSpanString(created_at.getTime())); } } final User[] sources = item.getSources(); final Status[] target_statuses = item.getTargetStatuses(); final int sources_length = sources != null ? sources.length : 0; final int target_statuses_length = target_statuses != null ? target_statuses.length : 0; final Action action = item.getAction(); holder.profile_image.setVisibility(mDisplayProfileImage ? View.VISIBLE : View.GONE); if (sources_length > 0) { final User first_source = sources[0]; final Status[] target_objects = item.getTargetObjectStatuses(); final String name = mDisplayName ? first_source.getName() : first_source.getScreenName(); switch (action.getActionId()) { case Action.ACTION_FAVORITE: { if (target_statuses_length > 0) { final Status status = target_statuses[0]; holder.text.setSingleLine(true); holder.text.setEllipsize(TruncateAt.END); holder.text.setText(status.getText()); } if (sources_length == 1) { holder.title.setText(mContext.getString(R.string.activity_about_me_favorite, name)); } else { holder.title.setText( mContext.getString( R.string.activity_about_me_favorite_multi, name, sources_length - 1)); } holder.activity_profile_image_container.setVisibility( mDisplayProfileImage ? View.VISIBLE : View.GONE); setUserProfileImages(sources, holder); break; } case Action.ACTION_FOLLOW: { holder.text.setVisibility(View.GONE); if (sources_length == 1) { holder.title.setText(mContext.getString(R.string.activity_about_me_follow, name)); } else { holder.title.setText( mContext.getString( R.string.activity_about_me_follow_multi, name, sources_length - 1)); } holder.activity_profile_image_container.setVisibility( mDisplayProfileImage ? View.VISIBLE : View.GONE); setUserProfileImages(sources, holder); break; } case Action.ACTION_MENTION: { holder.title.setText(name); if (target_objects != null && target_objects.length > 0) { final Status status = target_objects[0]; holder.text.setText(status.getText()); if (status.getInReplyToStatusId() > 0 && status.getInReplyToScreenName() != null) { holder.reply_status.setVisibility(View.VISIBLE); holder.reply_status.setText( mContext.getString(R.string.in_reply_to, status.getInReplyToScreenName())); holder.reply_status.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_indicator_reply, 0, 0, 0); } } setProfileImage(first_source.getProfileImageURL(), holder); break; } case Action.ACTION_REPLY: { holder.title.setText(name); if (target_statuses_length > 0) { final Status status = target_statuses[0]; holder.text.setText(status.getText()); if (status.getInReplyToStatusId() > 0 && status.getInReplyToScreenName() != null) { holder.reply_status.setVisibility(View.VISIBLE); holder.reply_status.setText( mContext.getString(R.string.in_reply_to, status.getInReplyToScreenName())); holder.reply_status.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_indicator_reply, 0, 0, 0); } } setProfileImage(first_source.getProfileImageURL(), holder); break; } case Action.ACTION_RETWEET: { if (target_objects != null && target_objects.length > 0) { final Status status = target_objects[0]; holder.text.setSingleLine(true); holder.text.setEllipsize(TruncateAt.END); holder.text.setText(status.getText()); } if (sources_length == 1) { holder.title.setText(mContext.getString(R.string.activity_about_me_retweet, name)); } else { holder.title.setText( mContext.getString( R.string.activity_about_me_retweet_multi, name, sources_length - 1)); } holder.activity_profile_image_container.setVisibility( mDisplayProfileImage ? View.VISIBLE : View.GONE); setUserProfileImages(sources, holder); break; } case Action.ACTION_LIST_MEMBER_ADDED: { holder.text.setVisibility(View.GONE); if (sources_length == 1) { holder.title.setText( mContext.getString(R.string.activity_about_me_list_member_added, name)); } else { holder.title.setText( mContext.getString( R.string.activity_about_me_list_member_added_multi, name, sources_length - 1)); } holder.activity_profile_image_container.setVisibility( mDisplayProfileImage ? View.VISIBLE : View.GONE); setUserProfileImages(sources, holder); break; } } } return view; }
@Override public void onListItemClick(final ListView l, final View v, final int position, final long id) { if (mAccountId <= 0) return; final int adapter_pos = position - l.getHeaderViewsCount(); final twitter4j.Activity item = mAdapter.getItem(adapter_pos); final User[] sources = item.getSources(); final Status[] target_statuses = item.getTargetStatuses(); final int sources_length = sources != null ? sources.length : 0; final Action action = item.getAction(); final boolean hires_profile_image = getResources().getBoolean(R.bool.hires_profile_image); if (sources_length > 0) { final Status[] target_objects = item.getTargetObjectStatuses(); switch (action.getActionId()) { case Action.ACTION_FAVORITE: { if (sources_length == 1) { openUserProfile( getActivity(), new ParcelableUser(sources[0], mAccountId, hires_profile_image)); } else { if (target_statuses != null && target_statuses.length > 0) { final Status status = target_statuses[0]; openStatus( getActivity(), new ParcelableStatus(status, mAccountId, false, hires_profile_image)); } } break; } case Action.ACTION_FOLLOW: { if (sources_length == 1) { openUserProfile( getActivity(), new ParcelableUser(sources[0], mAccountId, hires_profile_image)); } else { openUserFollowers(getActivity(), mAccountId, mAccountId, null); } break; } case Action.ACTION_MENTION: { if (target_objects != null && target_objects.length > 0) { final Status status = target_objects[0]; openStatus( getActivity(), new ParcelableStatus(status, mAccountId, false, hires_profile_image)); } break; } case Action.ACTION_REPLY: { if (target_statuses != null && target_statuses.length > 0) { final Status status = target_statuses[0]; openStatus( getActivity(), new ParcelableStatus(status, mAccountId, false, hires_profile_image)); } break; } case Action.ACTION_RETWEET: { if (sources_length == 1) { openUserProfile( getActivity(), new ParcelableUser(sources[0], mAccountId, hires_profile_image)); } else { if (target_objects != null && target_objects.length > 0) { final Status status = target_objects[0]; openStatus( getActivity(), new ParcelableStatus(status, mAccountId, false, hires_profile_image)); } } break; } } } }