diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-04-24 10:30:59 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2020-04-24 15:12:11 +0300 |
commit | 4a7f37694e49a0e5635e9695a6464b013c66f09a (patch) | |
tree | aa8069b6a29611767b0711309b7afcd0d28bdb8d /app/src/main | |
parent | 4c4e41ac299e753ace433cf0e603332b175ba2ca (diff) |
#396 Filter cards
Select labels
Diffstat (limited to 'app/src/main')
6 files changed, 65 insertions, 19 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java index 3b95b43c8..cd20d62cb 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java @@ -55,8 +55,7 @@ public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> { } holder.binding.icon.setImageDrawable( - ViewUtil.getTintedImageView(activity, iconResource, "#" + getItem(position).getColor() - )); + ViewUtil.getTintedImageView(activity, iconResource, "#" + getItem(position).getColor())); holder.binding.label.setText(getItem(position).getTitle()); return convertView; } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java index d25f4d28f..b3b3eea47 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java @@ -128,6 +128,7 @@ public class FilterDialogFragment extends BrandedDialogFragment { .setNeutralButton(android.R.string.cancel, null) .setNegativeButton(R.string.simple_clear, (a, b) -> viewModel.postFilterInformation(null)) .setPositiveButton(R.string.simple_filter, (a, b) -> { + // Nach dieser Zeile ist labelAdapter.getSelected() leer filterInformation.clearLabelIds(); filterInformation.addAllLabelIds(labelAdapter.getSelected()); viewModel.postFilterInformation(filterInformation); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java index 1105de814..184603bb6 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java @@ -10,21 +10,27 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import java.util.ArrayList; import java.util.List; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.model.Label; +import it.niedermann.nextcloud.deck.util.ViewUtil; +@SuppressWarnings("WeakerAccess") public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter.LabelViewHolder> { - private Context context; - private List<Label> labels; - private List<Long> selectedLabelIds; + @NonNull + private final Context context; + @NonNull + private final List<Label> labels = new ArrayList<>(); + @NonNull + private final List<Long> selectedLabelIds = new ArrayList<>(); public LabelFilterAdapter(@NonNull Context context, @NonNull List<Label> labels, @NonNull List<Long> selectedLabelIds) { super(); this.context = context; - this.labels = labels; - this.selectedLabelIds = selectedLabelIds; + this.labels.addAll(labels); + this.selectedLabelIds.addAll(selectedLabelIds); setHasStableIds(true); notifyDataSetChanged(); } @@ -37,13 +43,13 @@ public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter. @NonNull @Override public LabelViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - View view = LayoutInflater.from(context).inflate(R.layout.item_user, viewGroup, false); + View view = LayoutInflater.from(context).inflate(R.layout.item_label, viewGroup, false); return new LabelViewHolder(view); } @Override - public void onBindViewHolder(@NonNull LabelViewHolder multiViewHolder, int position) { - multiViewHolder.bind(labels.get(position)); + public void onBindViewHolder(@NonNull LabelViewHolder viewHolder, int position) { + viewHolder.bind(labels.get(position)); } @Override @@ -57,17 +63,18 @@ public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter. class LabelViewHolder extends RecyclerView.ViewHolder { + // TODO Use ViewBinding private TextView textView; private ImageView imageView; LabelViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.displayname); - imageView = itemView.findViewById(R.id.avatar); + imageView = itemView.findViewById(R.id.label); } void bind(final Label label) { - imageView.setVisibility(selectedLabelIds.contains(label.getLocalId()) ? View.VISIBLE : View.GONE); + imageView.setImageDrawable(ViewUtil.getTintedImageView(imageView.getContext(), R.drawable.ic_label_grey600_24dp, "#" + label.getColor())); textView.setText(label.getTitle()); itemView.setOnClickListener(view -> { diff --git a/app/src/main/res/drawable/selected.xml b/app/src/main/res/drawable/selected.xml index cc62aec0d..cb301fd84 100644 --- a/app/src/main/res/drawable/selected.xml +++ b/app/src/main/res/drawable/selected.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:enterFadeDuration="@android:integer/config_shortAnimTime" android:state_activated="true"> + <item android:enterFadeDuration="@android:integer/config_shortAnimTime" android:state_selected="true"> <layer-list> <item> <shape android:shape="oval"> diff --git a/app/src/main/res/layout/item_label.xml b/app/src/main/res/layout/item_label.xml new file mode 100644 index 000000000..5817d0c6a --- /dev/null +++ b/app/src/main/res/layout/item_label.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout 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:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:orientation="horizontal" + android:padding="@dimen/spacer_1x"> + + <FrameLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + + <androidx.appcompat.widget.AppCompatImageView + android:layout_width="22dp" + android:layout_height="22dp" + android:layout_gravity="end|bottom" + android:background="@drawable/selected" /> + + <ImageView + android:id="@+id/label" + android:layout_width="@dimen/avatar_size" + android:layout_height="@dimen/avatar_size" + android:layout_marginEnd="@dimen/spacer_2x" + android:layout_marginRight="@dimen/spacer_2x" + android:contentDescription="@null" + app:srcCompat="@drawable/ic_label_grey600_24dp" /> + </FrameLayout> + + <TextView + android:id="@+id/displayname" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:textSize="16sp" + tools:text="@tools:sample/lorem" /> + +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/item_user.xml b/app/src/main/res/layout/item_user.xml index 7d2f584f4..c6ccf607f 100644 --- a/app/src/main/res/layout/item_user.xml +++ b/app/src/main/res/layout/item_user.xml @@ -11,6 +11,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"> + <androidx.appcompat.widget.AppCompatImageView + android:layout_width="22dp" + android:layout_height="22dp" + android:layout_gravity="end|bottom" + android:background="@drawable/selected" /> + <ImageView android:id="@+id/avatar" android:layout_width="@dimen/avatar_size" @@ -20,12 +26,6 @@ android:contentDescription="@null" app:srcCompat="@drawable/ic_person_grey600_24dp" tools:srcCompat="@tools:sample/avatars" /> - - <androidx.appcompat.widget.AppCompatImageView - android:layout_width="22dp" - android:layout_height="22dp" - android:layout_gravity="end|bottom" - android:background="@drawable/selected" /> </FrameLayout> <TextView |