diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index bf9030b71..1d5124a46 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -5,6 +5,7 @@ import android.app.SearchManager; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Canvas; import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; @@ -319,6 +320,20 @@ public void onClick(View v) { .show(); } } + + @Override + public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { + ItemAdapter.NoteViewHolder noteViewHolder = (ItemAdapter.NoteViewHolder) viewHolder; + // show delete icon on the right side + noteViewHolder.showSwipeDelete(dX>0); + // move only swipeable part of item (not leave-behind) + getDefaultUIUtil().onDraw(c, recyclerView, noteViewHolder.noteSwipeable, dX, dY, actionState, isCurrentlyActive); + } + + @Override + public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { + getDefaultUIUtil().clearView(((ItemAdapter.NoteViewHolder) viewHolder).noteSwipeable); + } }); touchHelper.attachToRecyclerView(listView); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java index af67882a2..44238e641 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java @@ -156,7 +156,8 @@ public interface NoteClickListener { } public class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener { - // each data item is just a string in this case + public View noteSwipeable; + public ImageView noteDeleteLeft, noteDeleteRight; public TextView noteTitle; public TextView noteCategory; public TextView noteExcerpt; @@ -166,6 +167,9 @@ public class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnLo private NoteViewHolder(View v) { super(v); + this.noteSwipeable = v.findViewById(R.id.noteSwipeable); + this.noteDeleteLeft = (ImageView) v.findViewById(R.id.noteDeleteLeft); + this.noteDeleteRight = (ImageView) v.findViewById(R.id.noteDeleteRight); this.noteTitle = (TextView) v.findViewById(R.id.noteTitle); this.noteCategory = (TextView) v.findViewById(R.id.noteCategory); this.noteExcerpt = (TextView) v.findViewById(R.id.noteExcerpt); @@ -188,6 +192,11 @@ public void onClick(View v) { public boolean onLongClick(View v) { return noteClickListener.onNoteLongClick(position, v); } + + public void showSwipeDelete(boolean left) { + noteDeleteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); + noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); + } } public static class SectionViewHolder extends RecyclerView.ViewHolder { diff --git a/app/src/main/res/layout/fragment_notes_list_note_item.xml b/app/src/main/res/layout/fragment_notes_list_note_item.xml index d86c31057..9a0f26c81 100644 --- a/app/src/main/res/layout/fragment_notes_list_note_item.xml +++ b/app/src/main/res/layout/fragment_notes_list_note_item.xml @@ -1,87 +1,113 @@ - + android:background="@color/bg_attention"> - - - - - + android:layout_height="fill_parent" + android:src="@drawable/ic_action_delete" + android:layout_gravity="left" + /> - + android:background="@drawable/list_item_background_selector" + android:id="@+id/noteSwipeable" + > - - \ No newline at end of file + + + + + + + + + + + + + +