Adds ability to remove a skill.
This commit is contained in:
		| @@ -903,6 +903,12 @@ public class EditMonsterViewModel extends ViewModel { | |||||||
|         newSkills.add(newSkill); |         newSkills.add(newSkill); | ||||||
|         Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); |         Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); | ||||||
|         mSkills.setValue(newSkills); |         mSkills.setValue(newSkills); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void removeSkill(int position) { | ||||||
|  |         List<Skill> skills = mSkills.getValue(); | ||||||
|  |         ArrayList<Skill> newSkills = new ArrayList<>(skills); | ||||||
|  |         newSkills.remove(position); | ||||||
|         mSkills.setValue(newSkills); |         mSkills.setValue(newSkills); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -13,11 +13,13 @@ import androidx.navigation.NavBackStackEntry; | |||||||
| import androidx.navigation.NavController; | import androidx.navigation.NavController; | ||||||
| import androidx.navigation.Navigation; | import androidx.navigation.Navigation; | ||||||
| import androidx.recyclerview.widget.DividerItemDecoration; | import androidx.recyclerview.widget.DividerItemDecoration; | ||||||
|  | import androidx.recyclerview.widget.ItemTouchHelper; | ||||||
| import androidx.recyclerview.widget.LinearLayoutManager; | import androidx.recyclerview.widget.LinearLayoutManager; | ||||||
| import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; | ||||||
|  |  | ||||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton; | import com.google.android.material.floatingactionbutton.FloatingActionButton; | ||||||
| import com.majinnaibu.monstercards.R; | import com.majinnaibu.monstercards.R; | ||||||
|  | import com.majinnaibu.monstercards.ui.shared.SwipeToDeleteCallback; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * A fragment representing a list of Items. |  * A fragment representing a list of Items. | ||||||
| @@ -54,6 +56,9 @@ public class EditSkillsFragment extends Fragment { | |||||||
|  |  | ||||||
|         DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation()); |         DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation()); | ||||||
|         recyclerView.addItemDecoration(dividerItemDecoration); |         recyclerView.addItemDecoration(dividerItemDecoration); | ||||||
|  |  | ||||||
|  |         ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, mViewModel::removeSkill)); | ||||||
|  |         itemTouchHelper.attachToRecyclerView(recyclerView); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void setupAddSkillButton(@NonNull FloatingActionButton fab) { |     private void setupAddSkillButton(@NonNull FloatingActionButton fab) { | ||||||
|   | |||||||
| @@ -16,9 +16,11 @@ import java.util.List; | |||||||
|  */ |  */ | ||||||
| public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkillsRecyclerViewAdapter.ViewHolder> { | public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkillsRecyclerViewAdapter.ViewHolder> { | ||||||
|     private final List<Skill> mValues; |     private final List<Skill> mValues; | ||||||
|  |     private final ItemCallback mOnDelete; | ||||||
|  |  | ||||||
|     public EditSkillsRecyclerViewAdapter(List<Skill> items) { |     public EditSkillsRecyclerViewAdapter(List<Skill> items, ItemCallback onDelete) { | ||||||
|         mValues = items; |         mValues = items; | ||||||
|  |         mOnDelete = onDelete; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -37,6 +39,17 @@ public class EditSkillsRecyclerViewAdapter extends RecyclerView.Adapter<EditSkil | |||||||
|         return mValues.size(); |         return mValues.size(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void removeItem(int position) { | ||||||
|  |         if (mOnDelete != null) { | ||||||
|  |             Skill skill = mValues.get(position); | ||||||
|  |             mOnDelete.onItemCallback(skill); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public interface ItemCallback { | ||||||
|  |         void onItemCallback(Skill skill); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public class ViewHolder extends RecyclerView.ViewHolder { |     public class ViewHolder extends RecyclerView.ViewHolder { | ||||||
|         public final TextView mContentView; |         public final TextView mContentView; | ||||||
|         public Skill mItem; |         public Skill mItem; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Tom Hicks
						Tom Hicks