Makes Add Skill button a FloatingActionButton.

This commit is contained in:
2021-06-12 19:51:48 -07:00
parent 703bb3d77f
commit b51318220b
3 changed files with 52 additions and 34 deletions

View File

@@ -1,11 +1,7 @@
package com.majinnaibu.monstercards.ui.editmonster;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -18,6 +14,7 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.majinnaibu.monstercards.R;
/**
@@ -25,46 +22,47 @@ import com.majinnaibu.monstercards.R;
*/
public class EditSkillsFragment extends Fragment {
private EditMonsterViewModel mViewModel;
// private ViewHolder mHolder;
private ViewHolder mHolder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_edit_skills_list, container, false);
NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment);
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation);
mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class);
setHasOptionsMenu(true);
// Set the adapter
if (view instanceof RecyclerView) {
Context context = view.getContext();
RecyclerView recyclerView = (RecyclerView) view;
recyclerView.setLayoutManager(new LinearLayoutManager(context));
mViewModel.getSkills().observe(getViewLifecycleOwner(), skills -> recyclerView.setAdapter(new EditSkillsRecyclerViewAdapter(mViewModel.getSkillsArray())));
}
View root = inflater.inflate(R.layout.fragment_edit_skills_list, container, false);
return view;
mHolder = new ViewHolder(root);
setupRecyclerView(mHolder.list);
setupAddSkillButton(mHolder.addSkill);
return root;
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.edit_skills_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
private void setupRecyclerView(@NonNull RecyclerView recyclerView) {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mViewModel.getSkills().observe(getViewLifecycleOwner(), skills -> recyclerView.setAdapter(new EditSkillsRecyclerViewAdapter(mViewModel.getSkillsArray())));
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.menu_action_add_skill) {
private void setupAddSkillButton(@NonNull FloatingActionButton fab) {
fab.setOnClickListener(view -> {
mViewModel.addNewSkill();
// TODO: navigate to editing the new skill
// NavDirections action = MonsterDetailFragmentDirections.actionNavigationMonsterToEditMonsterFragment(monsterDetailViewModel.getId().getValue().toString());
// View view = getView();
// assert view != null;
// 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);
}
}

View File

@@ -13,10 +13,8 @@ import java.util.List;
/**
* {@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> {
private final List<Skill> mValues;
public EditSkillsRecyclerViewAdapter(List<Skill> items) {

View File

@@ -1,13 +1,35 @@
<?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:tools="http://schemas.android.com/tools"
android:id="@+id/list"
android:name="com.majinnaibu.monstercards.ui.editmonster.EditSkillsFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
app:layoutManager="LinearLayoutManager"
tools:context=".ui.editmonster.EditSkillsFragment"
tools:listitem="@layout/fragment_edit_skills_list_item" />
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_marginRight="16dp"
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: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>