adding click listener for activities

This commit is contained in:
Mariotaku Lee 2015-10-06 23:18:59 +08:00
parent 42b63fa405
commit 8910b80338
5 changed files with 60 additions and 7 deletions

View File

@ -60,7 +60,7 @@ import org.mariotaku.twidere.view.holder.StatusViewHolder.StatusClickListener;
* Created by mariotaku on 15/1/3.
*/
public abstract class AbsActivitiesAdapter<Data> extends LoadMoreSupportAdapter<ViewHolder> implements Constants,
IActivitiesAdapter<Data>, StatusClickListener, OnLinkClickListener {
IActivitiesAdapter<Data>, StatusClickListener, OnLinkClickListener, ActivityTitleSummaryViewHolder.ActivityClickListener {
private static final int ITEM_VIEW_TYPE_STUB = 0;
private static final int ITEM_VIEW_TYPE_GAP = 1;
@ -239,6 +239,7 @@ public abstract class AbsActivitiesAdapter<Data> extends LoadMoreSupportAdapter<
cardView.setCardBackgroundColor(mCardBackgroundColor);
}
final ActivityTitleSummaryViewHolder holder = new ActivityTitleSummaryViewHolder(this, view);
holder.setOnClickListeners();
holder.setTextSize(getTextSize());
return holder;
}
@ -320,6 +321,11 @@ public abstract class AbsActivitiesAdapter<Data> extends LoadMoreSupportAdapter<
return getActivityCount() + (isLoadMoreIndicatorVisible() ? 1 : 0);
}
@Override
public boolean isGapItem(int position) {
return false;
}
@Override
public void onGapClick(ViewHolder holder, int position) {
if (mActivityAdapterListener != null) {
@ -360,8 +366,16 @@ public abstract class AbsActivitiesAdapter<Data> extends LoadMoreSupportAdapter<
return mDisplayMediaPreview;
}
@Override
public void onActivityClick(ActivityTitleSummaryViewHolder holder, int position) {
if (mActivityAdapterListener == null) return;
mActivityAdapterListener.onActivityClick(holder, position);
}
public interface ActivityAdapterListener {
void onGapClick(GapViewHolder holder, int position);
void onActivityClick(ActivityTitleSummaryViewHolder holder, int position);
}
private static class StubViewHolder extends ViewHolder {

View File

@ -44,6 +44,7 @@ import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.KeyboardShortcutsHandler;
import org.mariotaku.twidere.util.RecyclerViewNavigationHelper;
import org.mariotaku.twidere.view.HeaderDrawerLayout.DrawerCallback;
import org.mariotaku.twidere.view.holder.ActivityTitleSummaryViewHolder;
import org.mariotaku.twidere.view.holder.GapViewHolder;
/**
@ -69,6 +70,11 @@ public abstract class AbsActivitiesFragment<Data> extends AbsContentRecyclerView
getActivities(accountIds, maxIds, null);
}
@Override
public void onActivityClick(ActivityTitleSummaryViewHolder holder, int position) {
}
@Override
public boolean handleKeyboardShortcutSingle(@NonNull KeyboardShortcutsHandler handler, int keyCode, @NonNull KeyEvent event) {
return mNavigationHelper.handleKeyboardShortcutSingle(handler, keyCode, event);

View File

@ -43,12 +43,15 @@ import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.UserColorNameManager;
import org.mariotaku.twidere.view.ActionIconView;
import org.mariotaku.twidere.view.iface.IColorLabelView;
import org.oshkimaadziig.george.androidutils.SpanFormatter;
/**
* Created by mariotaku on 15/1/3.
*/
public class ActivityTitleSummaryViewHolder extends ViewHolder {
public class ActivityTitleSummaryViewHolder extends ViewHolder implements View.OnClickListener {
private final IColorLabelView itemContent;
private final AbsActivitiesAdapter adapter;
private final ActionIconView activityTypeView;
@ -57,10 +60,14 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
private final ViewGroup profileImagesContainer;
private final TextView profileImageMoreNumber;
private final ImageView[] profileImageViews;
private ActivityClickListener activityClickListener;
public ActivityTitleSummaryViewHolder(AbsActivitiesAdapter adapter, View itemView) {
super(itemView);
this.adapter = adapter;
itemContent = (IColorLabelView) itemView.findViewById(R.id.item_content);
activityTypeView = (ActionIconView) itemView.findViewById(R.id.activity_type);
titleView = (TextView) itemView.findViewById(R.id.title);
summaryView = (TextView) itemView.findViewById(R.id.summary);
@ -176,7 +183,6 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
public void displayActivitiesByFriends(ParcelableActivity activity) {
final Context context = adapter.getContext();
final Resources resources = adapter.getContext().getResources();
switch (activity.action) {
case Activity.ACTION_FOLLOW: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_follow);
@ -313,4 +319,31 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
}
public void setOnClickListeners() {
setActivityClickListener(adapter);
}
public void setActivityClickListener(ActivityClickListener listener) {
activityClickListener = listener;
((View) itemContent).setOnClickListener(this);
// ((View) itemContent).setOnLongClickListener(this);
}
@Override
public void onClick(View v) {
if (activityClickListener == null) return;
final int position = getLayoutPosition();
switch (v.getId()) {
case R.id.item_content: {
activityClickListener.onActivityClick(this, position);
break;
}
}
}
public interface ActivityClickListener {
void onActivityClick(ActivityTitleSummaryViewHolder holder, int position);
}
}

View File

@ -31,7 +31,7 @@
app:cardCornerRadius="2dp"
app:cardElevation="2dp">
<RelativeLayout
<org.mariotaku.twidere.view.ColorLabelRelativeLayout
android:id="@+id/item_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -149,5 +149,5 @@
tools:text="@string/sample_status_text"
tools:textSize="12sp" />
</RelativeLayout>
</org.mariotaku.twidere.view.ColorLabelRelativeLayout>
</android.support.v7.widget.CardView>

View File

@ -17,7 +17,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<org.mariotaku.twidere.view.ColorLabelRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_content"
android:layout_width="match_parent"
@ -136,4 +136,4 @@
tools:text="@string/sample_status_text"
tools:textSize="@dimen/text_size_extra_small" />
</RelativeLayout>
</org.mariotaku.twidere.view.ColorLabelRelativeLayout>