]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionItemsAdapter.java
NT: keep cursor position while setting account name text
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / new_transaction / NewTransactionItemsAdapter.java
index f8686dcfa72c4690320ebd962d4c19ca951e489a..b1844c8ec182eda8b1a07f8089d4fd71a5fed751 100644 (file)
@@ -52,7 +52,8 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
                                                   @NonNull NewTransactionModel.Item newItem) {
 
 //                    Logger.debug("new-trans",
-//                            String.format("comparing contents of {%s} and {%s}", oldItem.toString(),
+//                            String.format("comparing contents of {%s} and {%s}", oldItem
+//                            .toString(),
 //                                    newItem.toString()));
                     return oldItem.equalContents(newItem);
                 }
@@ -79,11 +80,9 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
                                        @NonNull RecyclerView.ViewHolder target) {
                 final int adapterPosition = target.getAdapterPosition();
 
-                // first and last items are immovable
+                // first item is immovable
                 if (adapterPosition == 0)
                     return false;
-                if (adapterPosition == adapter.getItemCount() - 1)
-                    return false;
 
                 return super.canDropOver(recyclerView, current, target);
             }
@@ -93,7 +92,7 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
                 int flags = makeFlag(ItemTouchHelper.ACTION_STATE_IDLE, ItemTouchHelper.END);
                 // the top (date and description) and the bottom (padding) items are always there
                 final int adapterPosition = viewHolder.getAdapterPosition();
-                if ((adapterPosition > 0) && (adapterPosition < adapter.getItemCount() - 1)) {
+                if (adapterPosition > 0) {
                     flags |= makeFlag(ItemTouchHelper.ACTION_STATE_DRAG,
                             ItemTouchHelper.UP | ItemTouchHelper.DOWN) |
                              makeFlag(ItemTouchHelper.ACTION_STATE_SWIPE,
@@ -133,11 +132,16 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
                 NewTransactionRowBinding.inflate(LayoutInflater.from(parent.getContext()), parent,
                         false);
 
-        return new NewTransactionItemHolder(b, this);
+        final NewTransactionItemHolder newHolder = new NewTransactionItemHolder(b, this);
+        Logger.debug("new-trans",
+                "Creating new ViewHolder " + Integer.toHexString(newHolder.hashCode()));
+        return newHolder;
     }
     @Override
     public void onBindViewHolder(@NonNull NewTransactionItemHolder holder, int position) {
-        Logger.debug("bind", String.format(Locale.US, "Binding item at position %d", position));
+        Logger.debug("bind",
+                String.format(Locale.US, "Binding item at position %d, holder %s", position,
+                        Integer.toHexString(holder.hashCode())));
         NewTransactionModel.Item item = Objects.requireNonNull(differ.getCurrentList()
                                                                      .get(position));
         holder.bind(item);