Makes Add Skill button a FloatingActionButton.
This commit is contained in:
		| @@ -1,11 +1,7 @@ | |||||||
| package com.majinnaibu.monstercards.ui.editmonster; | package com.majinnaibu.monstercards.ui.editmonster; | ||||||
|  |  | ||||||
| import android.content.Context; |  | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
| import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||||
| import android.view.Menu; |  | ||||||
| import android.view.MenuInflater; |  | ||||||
| import android.view.MenuItem; |  | ||||||
| import android.view.View; | import android.view.View; | ||||||
| import android.view.ViewGroup; | import android.view.ViewGroup; | ||||||
|  |  | ||||||
| @@ -18,6 +14,7 @@ import androidx.navigation.Navigation; | |||||||
| 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.majinnaibu.monstercards.R; | import com.majinnaibu.monstercards.R; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -25,46 +22,47 @@ import com.majinnaibu.monstercards.R; | |||||||
|  */ |  */ | ||||||
| public class EditSkillsFragment extends Fragment { | public class EditSkillsFragment extends Fragment { | ||||||
|     private EditMonsterViewModel mViewModel; |     private EditMonsterViewModel mViewModel; | ||||||
| //    private ViewHolder mHolder; |     private ViewHolder mHolder; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public View onCreateView(LayoutInflater inflater, ViewGroup container, |     public View onCreateView(LayoutInflater inflater, ViewGroup container, | ||||||
|                              Bundle savedInstanceState) { |                              Bundle savedInstanceState) { | ||||||
|         View view = inflater.inflate(R.layout.fragment_edit_skills_list, container, false); |  | ||||||
|  |  | ||||||
|         NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment); |         NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment); | ||||||
|         NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation); |         NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation); | ||||||
|         mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class); |         mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class); | ||||||
|         setHasOptionsMenu(true); |  | ||||||
|  |  | ||||||
|         // Set the adapter |         View root = inflater.inflate(R.layout.fragment_edit_skills_list, container, false); | ||||||
|         if (view instanceof RecyclerView) { |  | ||||||
|             Context context = view.getContext(); |         mHolder = new ViewHolder(root); | ||||||
|             RecyclerView recyclerView = (RecyclerView) view; |         setupRecyclerView(mHolder.list); | ||||||
|             recyclerView.setLayoutManager(new LinearLayoutManager(context)); |         setupAddSkillButton(mHolder.addSkill); | ||||||
|  |  | ||||||
|  |         return root; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private void setupRecyclerView(@NonNull RecyclerView recyclerView) { | ||||||
|  |         recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); | ||||||
|         mViewModel.getSkills().observe(getViewLifecycleOwner(), skills -> recyclerView.setAdapter(new EditSkillsRecyclerViewAdapter(mViewModel.getSkillsArray()))); |         mViewModel.getSkills().observe(getViewLifecycleOwner(), skills -> recyclerView.setAdapter(new EditSkillsRecyclerViewAdapter(mViewModel.getSkillsArray()))); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|         return view; |     private void setupAddSkillButton(@NonNull FloatingActionButton fab) { | ||||||
|     } |         fab.setOnClickListener(view -> { | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { |  | ||||||
|         inflater.inflate(R.menu.edit_skills_menu, menu); |  | ||||||
|         super.onCreateOptionsMenu(menu, inflater); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public boolean onOptionsItemSelected(@NonNull MenuItem item) { |  | ||||||
|         if (item.getItemId() == R.id.menu_action_add_skill) { |  | ||||||
|             mViewModel.addNewSkill(); |             mViewModel.addNewSkill(); | ||||||
|             // TODO: navigate to editing the new skill |             // TODO: navigate to editing the new skill | ||||||
| //            NavDirections action = MonsterDetailFragmentDirections.actionNavigationMonsterToEditMonsterFragment(monsterDetailViewModel.getId().getValue().toString()); | //            NavDirections action = MonsterDetailFragmentDirections.actionNavigationMonsterToEditMonsterFragment(monsterDetailViewModel.getId().getValue().toString()); | ||||||
| //            View view = getView(); | //            View view = getView(); | ||||||
| //            assert view != null; | //            assert view != null; | ||||||
| //            Navigation.findNavController(view).navigate(action); | //            Navigation.findNavController(view).navigate(action); | ||||||
|             return true; |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private static class ViewHolder { | ||||||
|  |         RecyclerView list; | ||||||
|  |         FloatingActionButton addSkill; | ||||||
|  |  | ||||||
|  |         ViewHolder(View root) { | ||||||
|  |             this.list = root.findViewById(R.id.list); | ||||||
|  |             this.addSkill = root.findViewById(R.id.add_skill); | ||||||
|         } |         } | ||||||
|         return super.onOptionsItemSelected(item); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -13,10 +13,8 @@ import java.util.List; | |||||||
|  |  | ||||||
| /** | /** | ||||||
|  * {@link RecyclerView.Adapter} that can display a {@link Skill}. |  * {@link RecyclerView.Adapter} that can display a {@link Skill}. | ||||||
|  * TODO: Replace the implementation with code for your data type. |  | ||||||
|  */ |  */ | ||||||
| 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; | ||||||
|  |  | ||||||
|     public EditSkillsRecyclerViewAdapter(List<Skill> items) { |     public EditSkillsRecyclerViewAdapter(List<Skill> items) { | ||||||
|   | |||||||
| @@ -1,13 +1,35 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" |     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||||
|     xmlns:tools="http://schemas.android.com/tools" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:id="@+id/list" |  | ||||||
|     android:name="com.majinnaibu.monstercards.ui.editmonster.EditSkillsFragment" |     android:name="com.majinnaibu.monstercards.ui.editmonster.EditSkillsFragment" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent" |     android:layout_height="match_parent" | ||||||
|  |     tools:context=".ui.library.LibraryFragment"> | ||||||
|  |  | ||||||
|  |     <androidx.recyclerview.widget.RecyclerView | ||||||
|  |         android:id="@+id/list" | ||||||
|  |         android:layout_width="match_parent" | ||||||
|  |         android:layout_height="match_parent" | ||||||
|         android:layout_marginLeft="16dp" |         android:layout_marginLeft="16dp" | ||||||
|         android:layout_marginRight="16dp" |         android:layout_marginRight="16dp" | ||||||
|         app:layoutManager="LinearLayoutManager" |         app:layoutManager="LinearLayoutManager" | ||||||
|  |         app:layout_constraintBottom_toBottomOf="parent" | ||||||
|  |         app:layout_constraintEnd_toEndOf="parent" | ||||||
|  |         app:layout_constraintStart_toStartOf="parent" | ||||||
|  |         app:layout_constraintTop_toTopOf="parent" | ||||||
|         tools:context=".ui.editmonster.EditSkillsFragment" |         tools:context=".ui.editmonster.EditSkillsFragment" | ||||||
|         tools:listitem="@layout/fragment_edit_skills_list_item" /> |         tools:listitem="@layout/fragment_edit_skills_list_item" /> | ||||||
|  |  | ||||||
|  |     <com.google.android.material.floatingactionbutton.FloatingActionButton | ||||||
|  |         android:id="@+id/add_skill" | ||||||
|  |         android:layout_width="wrap_content" | ||||||
|  |         android:layout_height="wrap_content" | ||||||
|  |         android:layout_gravity="bottom|end" | ||||||
|  |         android:layout_margin="@dimen/fab_margin" | ||||||
|  |         android:contentDescription="@string/action_add_skill" | ||||||
|  |         app:layout_constraintBottom_toBottomOf="parent" | ||||||
|  |         app:layout_constraintEnd_toEndOf="parent" | ||||||
|  |         app:srcCompat="@android:drawable/ic_input_add" | ||||||
|  |         app:tint="@android:color/white" /> | ||||||
|  | </androidx.constraintlayout.widget.ConstraintLayout> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user