Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public int getOldListSize() {
public int getNewListSize() {
return mNewList.size();
}

public abstract boolean areItemsTheSame(int oldItemPosition, int newItemPosition);

public abstract boolean areContentsTheSame(int oldItemPosition, int newItemPosition);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public interface OnInteractionListener {
private final List<NodeInfo> nodeItems = new ArrayList<>();
private final OnInteractionListener listener;

private Context context;
private final Context context;

public NodeInfoAdapter(Context context, OnInteractionListener listener) {
this.context = context;
Expand All @@ -72,23 +72,20 @@ public NodeDiff(List<NodeInfo> oldList, List<NodeInfo> newList) {

@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
return mOldList.get(oldItemPosition).equals(
mNewList.get(newItemPosition)
);
return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition));
}

@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
return mOldList.get(oldItemPosition).toNodeString().equals(mNewList.get(newItemPosition).toNodeString())
&& mOldList.get(oldItemPosition).isSelected() == mNewList.get(newItemPosition).isSelected() ;
&& (mOldList.get(oldItemPosition).isSelected() == mNewList.get(newItemPosition).isSelected());
}
}

@Override
public @NonNull
ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_node, parent, false);
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_node, parent, false);
return new ViewHolder(view);
}

Expand All @@ -111,18 +108,19 @@ public void addNode(NodeInfo node) {

public void setNodes(Collection<NodeInfo> newItemsCollection) {
List<NodeInfo> newItems;
if(newItemsCollection !=null) {
if (newItemsCollection != null) {
newItems = new ArrayList<>(newItemsCollection);
Collections.sort(newItems, NodeInfo.BestNodeComparator);
} else {
newItems = new ArrayList<>();
}
final NodeInfoAdapter.NodeDiff diffCallback = new NodeInfoAdapter.NodeDiff(nodeItems,newItems);
final NodeInfoAdapter.NodeDiff diffCallback = new NodeInfoAdapter.NodeDiff(nodeItems, newItems);
final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
nodeItems.clear();
nodeItems.addAll(newItems);
diffResult.dispatchUpdatesTo(this);
}

public void setNodes() {
setNodes(nodeItems);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
Expand All @@ -47,10 +48,10 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo

private final SimpleDateFormat DATETIME_FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm");

private int outboundColour;
private int inboundColour;
private int pendingColour;
private int failedColour;
private final int outboundColour;
private final int inboundColour;
private final int pendingColour;
private final int failedColour;

public interface OnInteractionListener {
void onInteraction(View view, TransactionInfo item);
Expand All @@ -59,7 +60,7 @@ public interface OnInteractionListener {
private final List<TransactionInfo> infoItems;
private final OnInteractionListener listener;

private Context context;
private final Context context;

public TransactionInfoAdapter(Context context, OnInteractionListener listener) {
this.context = context;
Expand All @@ -74,7 +75,6 @@ public TransactionInfoAdapter(Context context, OnInteractionListener listener) {
DATETIME_FORMATTER.setTimeZone(tz);
}


private static class TransactionInfoDiff extends DiffCallback<TransactionInfo> {

public TransactionInfoDiff(List<TransactionInfo> oldList, List<TransactionInfo> newList) {
Expand All @@ -83,22 +83,23 @@ public TransactionInfoDiff(List<TransactionInfo> oldList, List<TransactionInfo>

@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
return mOldList.get(oldItemPosition).hash.equals(
mNewList.get(newItemPosition).hash
);
return mOldList.get(oldItemPosition).hash.equals(mNewList.get(newItemPosition).hash);
}

@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
return mOldList.get(oldItemPosition).isPending == mNewList.get(newItemPosition).isPending &&
mOldList.get(oldItemPosition).isFailed == mNewList.get(newItemPosition).isFailed ;
final TransactionInfo oldItem = mOldList.get(oldItemPosition);
final TransactionInfo newItem = mNewList.get(newItemPosition);
return (oldItem.direction == newItem.direction)
&& (oldItem.isPending == newItem.isPending)
&& (oldItem.isFailed == newItem.isFailed);
}
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_transaction, parent, false);
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_transaction, parent, false);
return new ViewHolder(view);
}

Expand All @@ -113,14 +114,14 @@ public int getItemCount() {
}

public void setInfos(List<TransactionInfo> newItems) {
if(newItems == null) {
if (newItems == null) {
newItems = new ArrayList<>();
Timber.d("setInfos null");
} else {
Timber.d("setInfos %s", newItems.size());
}
Collections.sort(newItems);
final DiffCallback<TransactionInfo> diffCallback = new TransactionInfoAdapter.TransactionInfoDiff(infoItems,newItems);
final DiffCallback<TransactionInfo> diffCallback = new TransactionInfoAdapter.TransactionInfoDiff(infoItems, newItems);
final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
infoItems.clear();
infoItems.addAll(newItems);
Expand All @@ -129,7 +130,7 @@ public void setInfos(List<TransactionInfo> newItems) {

public void removeItem(int position) {
List<TransactionInfo> newItems = new ArrayList<>(infoItems);
if (newItems.size()>position)
if (newItems.size() > position)
newItems.remove(position);
setInfos(newItems); // in case the nodeinfo has changed
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import android.widget.ImageButton;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.widget.PopupMenu;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
Expand Down Expand Up @@ -64,6 +65,7 @@ public WalletInfoAdapter(Context context, OnInteractionListener listener) {
TimeZone tz = cal.getTimeZone(); //get the local time zone.
DATETIME_FORMATTER.setTimeZone(tz);
}

private static class WalletInfoDiff extends DiffCallback<WalletManager.WalletInfo> {

public WalletInfoDiff(List<WalletManager.WalletInfo> oldList, List<WalletManager.WalletInfo> newList) {
Expand All @@ -72,9 +74,7 @@ public WalletInfoDiff(List<WalletManager.WalletInfo> oldList, List<WalletManager

@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
return mOldList.get(oldItemPosition).name.equals(
mNewList.get(newItemPosition).name
);
return mOldList.get(oldItemPosition).name.equals(mNewList.get(newItemPosition).name);
}

@Override
Expand All @@ -83,6 +83,7 @@ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
}
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
Expand All @@ -105,21 +106,20 @@ public WalletManager.WalletInfo getItem(int position) {
}

public void setInfos(List<WalletManager.WalletInfo> newItems) {
if(newItems == null) {
if (newItems == null) {
newItems = new ArrayList<>();
Timber.d("setInfos null");
} else {
Timber.d("setInfos %s", newItems.size());
}
Collections.sort(newItems);
final DiffCallback<WalletManager.WalletInfo> diffCallback = new WalletInfoAdapter.WalletInfoDiff(infoItems,newItems);
final DiffCallback<WalletManager.WalletInfo> diffCallback = new WalletInfoAdapter.WalletInfoDiff(infoItems, newItems);
final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
infoItems.clear();
infoItems.addAll(newItems);
diffResult.dispatchUpdatesTo(this);
}


class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
final TextView tvName;
final TextView tvAddress;
Expand All @@ -132,35 +132,24 @@ class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
tvName = itemView.findViewById(R.id.tvName);
tvAddress = itemView.findViewById(R.id.tvAddress);
ibOptions = itemView.findViewById(R.id.ibOptions);
ibOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (popupOpen) return;
//creating a popup menu
PopupMenu popup = new PopupMenu(context, ibOptions);
//inflating menu from xml resource
popup.inflate(R.menu.list_context_menu);
popupOpen = true;
//adding click listener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (listener != null) {
return listener.onContextInteraction(item, infoItem);
}
return false;
}
});
//displaying the popup
popup.show();
popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
@Override
public void onDismiss(PopupMenu menu) {
popupOpen = false;
}
});
ibOptions.setOnClickListener(view -> {
if (popupOpen) return;
//creating a popup menu
PopupMenu popup = new PopupMenu(context, ibOptions);
//inflating menu from xml resource
popup.inflate(R.menu.list_context_menu);
popupOpen = true;
//adding click listener
popup.setOnMenuItemClickListener(item -> {
if (listener != null) {
return listener.onContextInteraction(item, infoItem);
}
return false;
});
//displaying the popup
popup.show();
popup.setOnDismissListener(menu -> popupOpen = false);

}
});
itemView.setOnClickListener(this);
}
Expand Down