Change the way a feed is deleted, we are now using a swipe

This commit is contained in:
Shinokuni 2019-03-09 19:04:32 +01:00
parent 54b4aa15a7
commit 5df6e1ed27
3 changed files with 39 additions and 26 deletions

View File

@ -5,12 +5,15 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.util.DiffUtil;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
@ -55,11 +58,6 @@ public class ManageFeedsActivity extends AppCompatActivity {
openEditFeedDialog(feedWithFolder);
}
@Override
public void onDelete(FeedWithFolder feedWithFolder) {
deleteFolder(feedWithFolder.getFeed().getId());
}
@Override
public void onOpenLink(FeedWithFolder feedWithFolder) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
@ -72,13 +70,40 @@ public class ManageFeedsActivity extends AppCompatActivity {
recyclerView.setAdapter(adapter);
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
int swipeFlags = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
return makeMovementFlags(0, swipeFlags);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
deleteFolder(adapter.getItemAt(viewHolder.getAdapterPosition()).getFeed().getId(),
viewHolder.getAdapterPosition());
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
}).attachToRecyclerView(recyclerView);
viewModel = ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()).create(ManageFeedsViewModel.class);
viewModel.getFeedsWithFolder().observe(this, feedWithFolders -> {
adapter.submitList(feedWithFolders);
});
}
private void deleteFolder(int feedId) {
private void deleteFolder(int feedId, int position) {
new MaterialDialog.Builder(this)
.title(getString(R.string.delete_feed))
.positiveText(getString(R.string.validate))
@ -97,6 +122,7 @@ public class ManageFeedsActivity extends AppCompatActivity {
Toast.makeText(getApplication(), "error on feed deletion", Toast.LENGTH_LONG).show();
}
}))
.onNegative(((dialog, which) -> adapter.notifyItemChanged(position)))
.show();
}

View File

@ -65,8 +65,9 @@ public class FeedsAdapter extends ListAdapter<FeedWithFolder, FeedsAdapter.ViewH
this.listener = listener;
}
public FeedWithFolder getItemAt(int position) {
return getItem(position);
}
@NonNull
@Override
@ -106,7 +107,6 @@ public class FeedsAdapter extends ListAdapter<FeedWithFolder, FeedsAdapter.ViewH
listener.onOpenLink(getItem(i));
return true;
});
viewHolder.deleteFeed.setOnClickListener(v -> listener.onDelete(getItem(i)));
}
@ -129,11 +129,9 @@ public class FeedsAdapter extends ListAdapter<FeedWithFolder, FeedsAdapter.ViewH
public interface ManageFeedsListener {
void onOpenLink(FeedWithFolder feedWithFolder);
void onEdit(FeedWithFolder feedWithFolder);
void onDelete(FeedWithFolder feedWithFolder);
}
protected class ViewHolder extends RecyclerView.ViewHolder {
private ImageView feedIcon;
@ -141,8 +139,6 @@ public class FeedsAdapter extends ListAdapter<FeedWithFolder, FeedsAdapter.ViewH
private TextView feedDescription;
private TextView folderName;
private ImageView deleteFeed;
public ViewHolder(View itemView) {
super(itemView);
@ -150,7 +146,6 @@ public class FeedsAdapter extends ListAdapter<FeedWithFolder, FeedsAdapter.ViewH
feedName = itemView.findViewById(R.id.feed_layout_name);
feedDescription = itemView.findViewById(R.id.feed_layout_description);
folderName = itemView.findViewById(R.id.feed_layout_folder);
deleteFeed = itemView.findViewById(R.id.feed_layout_delete);
}
}
}

View File

@ -34,7 +34,7 @@
style="@style/Base.TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/feed_layout_delete"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@id/feed_layout_icon"
android:ellipsize="end"
android:maxLines="2"
@ -53,16 +53,8 @@
android:maxLines="3"
android:minLines="1"
android:visibility="visible"
tools:text="This is a feed description"
tools:visibility="visible" />
tools:text="This is a feed description" />
<ImageView
android:id="@+id/feed_layout_delete"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:layout_marginStart="8dp"
android:src="@drawable/ic_delete_grey" />
</RelativeLayout>
@ -84,10 +76,10 @@
style="@style/Base.TextAppearance.AppCompat.Body1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/feed_layout_folder_icon"
android:layout_toRightOf="@id/feed_layout_folder_icon"
android:layout_alignParentEnd="true"
android:layout_marginStart="6dp"
android:layout_toEndOf="@id/feed_layout_folder_icon"
android:layout_toRightOf="@id/feed_layout_folder_icon"
android:ellipsize="end"
android:maxLines="1"
tools:text="Folder 1" />