[android] Remove type parameter from view holders.

This commit is contained in:
akwizgran
2018-11-08 11:47:11 +00:00
committed by Torsten Grote
parent ad4729b2f9
commit f2b09deac4
7 changed files with 32 additions and 40 deletions

View File

@@ -20,7 +20,8 @@ class ConversationAdapter
private ConversationListener listener; private ConversationListener listener;
ConversationAdapter(Context ctx, ConversationListener conversationListener) { ConversationAdapter(Context ctx,
ConversationListener conversationListener) {
super(ctx, ConversationItem.class); super(ctx, ConversationItem.class);
listener = conversationListener; listener = conversationListener;
} }
@@ -56,13 +57,7 @@ class ConversationAdapter
@Override @Override
public void onBindViewHolder(ConversationItemViewHolder ui, int position) { public void onBindViewHolder(ConversationItemViewHolder ui, int position) {
ConversationItem item = items.get(position); ConversationItem item = items.get(position);
if (item instanceof ConversationRequestItem) { ui.bind(item, listener);
((ConversationRequestViewHolder) ui)
.bind((ConversationRequestItem) item, listener);
} else {
//noinspection unchecked
ui.bind(item);
}
listener.onItemVisible(item); listener.onItemVisible(item);
} }

View File

@@ -37,7 +37,7 @@ abstract class ConversationItem {
} }
@LayoutRes @LayoutRes
public int getLayout() { int getLayout() {
return layoutRes; return layoutRes;
} }
@@ -54,7 +54,7 @@ abstract class ConversationItem {
} }
@Nullable @Nullable
public String getText() { String getText() {
return text; return text;
} }
@@ -65,7 +65,7 @@ abstract class ConversationItem {
/** /**
* Only useful for incoming messages. * Only useful for incoming messages.
*/ */
public boolean isRead() { boolean isRead() {
return read; return read;
} }
@@ -97,7 +97,7 @@ abstract class ConversationItem {
this.seen = seen; this.seen = seen;
} }
public boolean isIncoming() { boolean isIncoming() {
return isIncoming; return isIncoming;
} }

View File

@@ -10,14 +10,14 @@ import android.widget.TextView;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.conversation.ConversationAdapter.ConversationListener;
import static org.briarproject.bramble.util.StringUtils.trim; import static org.briarproject.bramble.util.StringUtils.trim;
import static org.briarproject.briar.android.util.UiUtils.formatDate; import static org.briarproject.briar.android.util.UiUtils.formatDate;
@UiThread @UiThread
@NotNullByDefault @NotNullByDefault
abstract class ConversationItemViewHolder<T extends ConversationItem> abstract class ConversationItemViewHolder extends ViewHolder {
extends ViewHolder {
protected final ViewGroup layout; protected final ViewGroup layout;
@Nullable @Nullable
@@ -34,7 +34,7 @@ abstract class ConversationItemViewHolder<T extends ConversationItem>
} }
@CallSuper @CallSuper
void bind(T item) { void bind(ConversationItem item, ConversationListener listener) {
if (item.getText() == null) { if (item.getText() == null) {
text.setText("\u2026"); text.setText("\u2026");
} else { } else {
@@ -47,7 +47,7 @@ abstract class ConversationItemViewHolder<T extends ConversationItem>
if (outViewHolder != null) outViewHolder.bind(item); if (outViewHolder != null) outViewHolder.bind(item);
} }
protected boolean isIncoming() { boolean isIncoming() {
return outViewHolder == null; return outViewHolder == null;
} }

View File

@@ -7,8 +7,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@UiThread @UiThread
@NotNullByDefault @NotNullByDefault
class ConversationMessageViewHolder class ConversationMessageViewHolder extends ConversationItemViewHolder {
extends ConversationItemViewHolder<ConversationMessageItem> {
// image support will be added here (#1242) // image support will be added here (#1242)
@@ -16,9 +15,4 @@ class ConversationMessageViewHolder
super(v, isIncoming); super(v, isIncoming);
} }
@Override
void bind(ConversationMessageItem item) {
super.bind(item);
}
} }

View File

@@ -1,11 +1,13 @@
package org.briarproject.briar.android.conversation; package org.briarproject.briar.android.conversation;
import android.support.annotation.CallSuper;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.conversation.ConversationAdapter.ConversationListener;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
@@ -14,8 +16,7 @@ import static org.briarproject.bramble.util.StringUtils.trim;
@UiThread @UiThread
@NotNullByDefault @NotNullByDefault
class ConversationNoticeViewHolder<T extends ConversationNoticeItem> class ConversationNoticeViewHolder extends ConversationItemViewHolder {
extends ConversationItemViewHolder<T> {
private final TextView msgText; private final TextView msgText;
@@ -25,10 +26,12 @@ class ConversationNoticeViewHolder<T extends ConversationNoticeItem>
} }
@Override @Override
void bind(T item) { @CallSuper
super.bind(item); void bind(ConversationItem item, ConversationListener listener) {
ConversationNoticeItem notice = (ConversationNoticeItem) item;
super.bind(notice, listener);
String text = item.getMsgText(); String text = notice.getMsgText();
if (isNullOrEmpty(text)) { if (isNullOrEmpty(text)) {
msgText.setVisibility(GONE); msgText.setVisibility(GONE);
layout.setBackgroundResource(isIncoming() ? R.drawable.notice_in : layout.setBackgroundResource(isIncoming() ? R.drawable.notice_in :

View File

@@ -49,7 +49,7 @@ class ConversationRequestItem extends ConversationNoticeItem {
} }
@Nullable @Nullable
public GroupId getRequestedGroupId() { GroupId getRequestedGroupId() {
return requestedGroupId; return requestedGroupId;
} }
@@ -61,7 +61,7 @@ class ConversationRequestItem extends ConversationNoticeItem {
this.answered = true; this.answered = true;
} }
public boolean canBeOpened() { boolean canBeOpened() {
return canBeOpened; return canBeOpened;
} }

View File

@@ -13,8 +13,7 @@ import static android.view.View.VISIBLE;
@UiThread @UiThread
@NotNullByDefault @NotNullByDefault
class ConversationRequestViewHolder class ConversationRequestViewHolder extends ConversationNoticeViewHolder {
extends ConversationNoticeViewHolder<ConversationRequestItem> {
private final Button acceptButton; private final Button acceptButton;
private final Button declineButton; private final Button declineButton;
@@ -25,17 +24,18 @@ class ConversationRequestViewHolder
declineButton = v.findViewById(R.id.declineButton); declineButton = v.findViewById(R.id.declineButton);
} }
void bind(ConversationRequestItem item, @Override
ConversationListener listener) { void bind(ConversationItem item, ConversationListener listener) {
super.bind(item); ConversationRequestItem request = (ConversationRequestItem) item;
super.bind(request, listener);
if (item.wasAnswered() && item.canBeOpened()) { if (request.wasAnswered() && request.canBeOpened()) {
acceptButton.setVisibility(VISIBLE); acceptButton.setVisibility(VISIBLE);
acceptButton.setText(R.string.open); acceptButton.setText(R.string.open);
acceptButton.setOnClickListener( acceptButton.setOnClickListener(
v -> listener.openRequestedShareable(item)); v -> listener.openRequestedShareable(request));
declineButton.setVisibility(GONE); declineButton.setVisibility(GONE);
} else if (item.wasAnswered()) { } else if (request.wasAnswered()) {
acceptButton.setVisibility(GONE); acceptButton.setVisibility(GONE);
declineButton.setVisibility(GONE); declineButton.setVisibility(GONE);
} else { } else {
@@ -44,13 +44,13 @@ class ConversationRequestViewHolder
acceptButton.setOnClickListener(v -> { acceptButton.setOnClickListener(v -> {
acceptButton.setEnabled(false); acceptButton.setEnabled(false);
declineButton.setEnabled(false); declineButton.setEnabled(false);
listener.respondToRequest(item, true); listener.respondToRequest(request, true);
}); });
declineButton.setVisibility(VISIBLE); declineButton.setVisibility(VISIBLE);
declineButton.setOnClickListener(v -> { declineButton.setOnClickListener(v -> {
acceptButton.setEnabled(false); acceptButton.setEnabled(false);
declineButton.setEnabled(false); declineButton.setEnabled(false);
listener.respondToRequest(item, false); listener.respondToRequest(request, false);
}); });
} }
} }