Make status placeholder abstraction cleaner
This commit is contained in:
parent
0dede1ba7d
commit
74d6736afc
14 changed files with 387 additions and 326 deletions
|
|
@ -113,7 +113,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
|
|||
switch (type) {
|
||||
case MENTION: {
|
||||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||
StatusViewData status = concreteNotificaton.getStatusViewData();
|
||||
StatusViewData.Concrete status = concreteNotificaton.getStatusViewData();
|
||||
holder.setupWithStatus(status,
|
||||
statusListener, mediaPreviewEnabled);
|
||||
break;
|
||||
|
|
@ -279,7 +279,8 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
|
|||
notificationAvatar.setColorFilter(darkerFilter, PorterDuff.Mode.MULTIPLY);
|
||||
}
|
||||
|
||||
void setMessage(Notification.Type type, String displayName, StatusViewData status) {
|
||||
void setMessage(Notification.Type type, String displayName,
|
||||
StatusViewData.Concrete status) {
|
||||
Context context = message.getContext();
|
||||
String format;
|
||||
switch (type) {
|
||||
|
|
|
|||
|
|
@ -473,7 +473,7 @@ class StatusBaseViewHolder extends RecyclerView.ViewHolder {
|
|||
container.setOnClickListener(viewThreadListener);
|
||||
}
|
||||
|
||||
void setupWithStatus(StatusViewData status, final StatusActionListener listener,
|
||||
void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener,
|
||||
boolean mediaPreviewEnabled) {
|
||||
setDisplayName(status.getUserFullName());
|
||||
setUsername(status.getNickname());
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ class StatusDetailedViewHolder extends StatusBaseViewHolder {
|
|||
}
|
||||
|
||||
@Override
|
||||
void setupWithStatus(final StatusViewData status, final StatusActionListener listener,
|
||||
void setupWithStatus(final StatusViewData.Concrete status, final StatusActionListener listener,
|
||||
boolean mediaPreviewEnabled) {
|
||||
super.setupWithStatus(status, listener, mediaPreviewEnabled);
|
||||
reblogs.setText(status.getReblogsCount());
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class StatusViewHolder extends StatusBaseViewHolder {
|
|||
}
|
||||
|
||||
@Override
|
||||
void setupWithStatus(StatusViewData status, final StatusActionListener listener,
|
||||
void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener,
|
||||
boolean mediaPreviewEnabled) {
|
||||
super.setupWithStatus(status, listener, mediaPreviewEnabled);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public class ThreadAdapter extends RecyclerView.Adapter {
|
|||
private static final int VIEW_TYPE_STATUS = 0;
|
||||
private static final int VIEW_TYPE_STATUS_DETAILED = 1;
|
||||
|
||||
private List<StatusViewData> statuses;
|
||||
private List<StatusViewData.Concrete> statuses;
|
||||
private StatusActionListener statusActionListener;
|
||||
private boolean mediaPreviewEnabled;
|
||||
private int detailedStatusPosition;
|
||||
|
|
@ -66,13 +66,12 @@ public class ThreadAdapter extends RecyclerView.Adapter {
|
|||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
|
||||
StatusViewData.Concrete status = statuses.get(position);
|
||||
if (position == detailedStatusPosition) {
|
||||
StatusDetailedViewHolder holder = (StatusDetailedViewHolder) viewHolder;
|
||||
StatusViewData status = statuses.get(position);
|
||||
holder.setupWithStatus(status, statusActionListener, mediaPreviewEnabled);
|
||||
} else {
|
||||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||
StatusViewData status = statuses.get(position);
|
||||
holder.setupWithStatus(status, statusActionListener, mediaPreviewEnabled);
|
||||
}
|
||||
}
|
||||
|
|
@ -91,13 +90,13 @@ public class ThreadAdapter extends RecyclerView.Adapter {
|
|||
return statuses.size();
|
||||
}
|
||||
|
||||
public void setStatuses(List<StatusViewData> statuses) {
|
||||
public void setStatuses(List<StatusViewData.Concrete> statuses) {
|
||||
this.statuses.clear();
|
||||
this.statuses.addAll(statuses);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void addItem(int position, StatusViewData statusViewData) {
|
||||
public void addItem(int position, StatusViewData.Concrete statusViewData) {
|
||||
statuses.add(position, statusViewData);
|
||||
notifyItemInserted(position);
|
||||
}
|
||||
|
|
@ -109,12 +108,12 @@ public class ThreadAdapter extends RecyclerView.Adapter {
|
|||
notifyItemRangeRemoved(0, oldSize);
|
||||
}
|
||||
|
||||
public void addAll(int position, List<StatusViewData> statuses) {
|
||||
public void addAll(int position, List<StatusViewData.Concrete> statuses) {
|
||||
this.statuses.addAll(position, statuses);
|
||||
notifyItemRangeInserted(position, statuses.size());
|
||||
}
|
||||
|
||||
public void addAll(List<StatusViewData> statuses) {
|
||||
public void addAll(List<StatusViewData.Concrete> statuses) {
|
||||
int end = statuses.size();
|
||||
this.statuses.addAll(statuses);
|
||||
notifyItemRangeInserted(end, statuses.size());
|
||||
|
|
@ -126,7 +125,7 @@ public class ThreadAdapter extends RecyclerView.Adapter {
|
|||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setItem(int position, StatusViewData status, boolean notifyAdapter) {
|
||||
public void setItem(int position, StatusViewData.Concrete status, boolean notifyAdapter) {
|
||||
statuses.set(position, status);
|
||||
if (notifyAdapter) {
|
||||
notifyItemChanged(position);
|
||||
|
|
@ -134,7 +133,7 @@ public class ThreadAdapter extends RecyclerView.Adapter {
|
|||
}
|
||||
|
||||
@Nullable
|
||||
public StatusViewData getItem(int position) {
|
||||
public StatusViewData.Concrete getItem(int position) {
|
||||
if (position != RecyclerView.NO_POSITION && position >= 0 && position < statuses.size()) {
|
||||
return statuses.get(position);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -72,12 +72,14 @@ public class TimelineAdapter extends RecyclerView.Adapter {
|
|||
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
|
||||
if (position < statuses.size()) {
|
||||
StatusViewData status = statuses.get(position);
|
||||
if(status.isPlaceholder()) {
|
||||
if (status instanceof StatusViewData.Placeholder) {
|
||||
PlaceholderViewHolder holder = (PlaceholderViewHolder) viewHolder;
|
||||
holder.setup(!status.isPlaceholderLoading(), statusListener);
|
||||
holder.setup(!((StatusViewData.Placeholder) status).isLoading(), statusListener);
|
||||
} else {
|
||||
|
||||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||
holder.setupWithStatus(status, statusListener, mediaPreviewEnabled);
|
||||
holder.setupWithStatus((StatusViewData.Concrete) status,
|
||||
statusListener, mediaPreviewEnabled);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
@ -96,7 +98,7 @@ public class TimelineAdapter extends RecyclerView.Adapter {
|
|||
if (position == statuses.size()) {
|
||||
return VIEW_TYPE_FOOTER;
|
||||
} else {
|
||||
if(statuses.get(position).isPlaceholder()) {
|
||||
if (statuses.get(position) instanceof StatusViewData.Placeholder) {
|
||||
return VIEW_TYPE_PLACEHOLDER;
|
||||
} else {
|
||||
return VIEW_TYPE_STATUS;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue