diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-07-21 11:35:20 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-07-21 11:35:20 +0300 |
commit | c25a6a505796e74bf1a2d087d30c937728637e75 (patch) | |
tree | 08a81bfc01ef41a4b3b03b7e676308a16340c28f /app/src/main/java/it/niedermann/nextcloud/deck/ui/card | |
parent | 8dbe61e6bebcb3adea9073297edbbe1b7580e13f (diff) |
#573 projects - Prepare to load project resources separately
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/card')
3 files changed, 21 insertions, 27 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java index 73f8cb0cc..c00718c35 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java @@ -42,7 +42,7 @@ public class CardProjectsAdapter extends RecyclerView.Adapter<CardProjectsViewHo @Override public void onBindViewHolder(@NonNull CardProjectsViewHolder holder, int position) { final OcsProjectWithResources project = projects.get(position); - holder.bind(project.getProject(), (v) -> CardProjectResourcesDialog.newInstance(project.getResources()).show(fragmentManager, CardProjectResourcesDialog.class.getSimpleName())); + holder.bind(project.getProject(), (v) -> CardProjectResourcesDialog.newInstance(project.getLocalId()).show(fragmentManager, CardProjectResourcesDialog.class.getSimpleName())); } @Override diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceAdapter.java index d17050605..575354a0f 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceAdapter.java @@ -18,12 +18,10 @@ public class CardProjectResourceAdapter extends RecyclerView.Adapter<CardProject @NonNull private final Account account; @NonNull - private final List<OcsProjectResource> resources; + private final List<OcsProjectResource> resources = new ArrayList<>(); - public CardProjectResourceAdapter(@NonNull Account account, @NonNull List<OcsProjectResource> resources) { + public CardProjectResourceAdapter(@NonNull Account account) { this.account = account; - this.resources = new ArrayList<>(resources.size()); - this.resources.addAll(resources); setHasStableIds(true); } @@ -43,6 +41,12 @@ public class CardProjectResourceAdapter extends RecyclerView.Adapter<CardProject holder.bind(account, resources.get(position)); } + public void setResources(@NonNull List<OcsProjectResource> resources) { + this.resources.clear(); + this.resources.addAll(resources); + notifyDataSetChanged(); + } + @Override public int getItemCount() { return this.resources.size(); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java index a3414ecb5..8f10da69c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java @@ -10,43 +10,34 @@ import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; import androidx.lifecycle.ViewModelProvider; -import java.util.ArrayList; -import java.util.List; - import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.databinding.DialogProjectResourcesBinding; -import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectResource; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment; import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel; public class CardProjectResourcesDialog extends BrandedDialogFragment { - private static final String KEY_RESOURCES = "resources"; - - private CardProjectResourceAdapter adapter; + private static final String KEY_PROJECT_LOCAL_ID = "projectLocalId"; private SyncManager syncManager; - private DialogProjectResourcesBinding binding; - private EditCardViewModel viewModel; - @NonNull - private List<OcsProjectResource> resources = new ArrayList<>(); @Override public void onAttach(@NonNull Context context) { super.onAttach(context); final Bundle args = requireArguments(); - if (!args.containsKey(KEY_RESOURCES)) { - throw new IllegalArgumentException("Provide at least " + KEY_RESOURCES); + final long projectLocalId = args.getLong(KEY_PROJECT_LOCAL_ID, -1L); + if (projectLocalId < 0L) { + throw new IllegalArgumentException("Provide at least " + KEY_PROJECT_LOCAL_ID + " which must be a value greater than 0."); } - this.resources.addAll((ArrayList<OcsProjectResource>) args.getSerializable(KEY_RESOURCES)); + syncManager = new SyncManager(context); } @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - binding = DialogProjectResourcesBinding.inflate(inflater, container, false); - viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class); + final DialogProjectResourcesBinding binding = DialogProjectResourcesBinding.inflate(inflater, container, false); + final EditCardViewModel viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class); // TODO check if necessary // This might be a zombie fragment with an empty EditCardViewModel after Android killed the activity (but not the fragment instance @@ -56,11 +47,10 @@ public class CardProjectResourcesDialog extends BrandedDialogFragment { return binding.getRoot(); } - syncManager = new SyncManager(requireContext()); - - // TODO parameter needed - adapter = new CardProjectResourceAdapter(viewModel.getAccount(), resources); + final CardProjectResourceAdapter adapter = new CardProjectResourceAdapter(viewModel.getAccount()); binding.getRoot().setAdapter(adapter); + +// syncManager.getResourcesForProjectLocalId().observe((resources) -> adapter.setResources(resources)); return binding.getRoot(); } @@ -69,10 +59,10 @@ public class CardProjectResourcesDialog extends BrandedDialogFragment { } - public static DialogFragment newInstance(@NonNull List<OcsProjectResource> resources) { + public static DialogFragment newInstance(@NonNull Long projectLocalId) { final DialogFragment fragment = new CardProjectResourcesDialog(); final Bundle args = new Bundle(); - args.putSerializable(KEY_RESOURCES, (ArrayList<OcsProjectResource>)resources); + args.putSerializable(KEY_PROJECT_LOCAL_ID, projectLocalId); fragment.setArguments(args); return fragment; } |