Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java109
1 files changed, 69 insertions, 40 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java
index d1baa900f..49cb5ae6a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java
@@ -4,68 +4,97 @@ import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
+import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.NoSuchElementException;
+import java.util.ArrayList;
+import java.util.List;
+import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.User;
+import it.niedermann.nextcloud.deck.util.ViewUtil;
-public class UserFilterAdapter extends ArrayAdapter<User> {
+import static it.niedermann.nextcloud.deck.util.DimensionUtil.dpToPx;
+@SuppressWarnings("WeakerAccess")
+public class UserFilterAdapter extends RecyclerView.Adapter<UserFilterAdapter.UserViewHolder> {
+ final int avatarSize;
+ @NonNull
+ private final Context context;
+ @NonNull
+ private final Account account;
@NonNull
- private final LayoutInflater inflater;
+ private final List<User> users = new ArrayList<>();
+ @NonNull
+ private final List<User> selectedUsers = new ArrayList<>();
- @SuppressWarnings("WeakerAccess")
- public UserFilterAdapter(@NonNull Context context) {
- super(context, android.R.layout.simple_list_item_multiple_choice, android.R.id.text1);
- inflater = LayoutInflater.from(context);
+ public UserFilterAdapter(@NonNull Context context, @NonNull Account account, @NonNull List<User> users, @NonNull List<User> selectedUsers) {
+ super();
+ this.account = account;
+ this.context = context;
+ this.users.addAll(users);
+ this.selectedUsers.addAll(selectedUsers);
+ setHasStableIds(true);
+ notifyDataSetChanged();
+ avatarSize = dpToPx(context, R.dimen.avatar_size);
}
@Override
- public boolean hasStableIds() {
- return true;
+ public long getItemId(int position) {
+ return users.get(position).getLocalId();
}
+ @NonNull
@Override
- public long getItemId(int position) {
- final User user = getItem(position);
- if(user == null) {
- throw new NoSuchElementException();
- }
- return user.getLocalId();
+ public UserViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+ View view = LayoutInflater.from(context).inflate(R.layout.item_filter_user, viewGroup, false);
+ return new UserViewHolder(view);
}
@Override
- public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
- return getView(position, convertView, parent);
+ public void onBindViewHolder(@NonNull UserViewHolder viewHolder, int position) {
+ viewHolder.bind(users.get(position));
}
- @SuppressWarnings("WeakerAccess")
- public int getPosition(long labelId) {
- for (int i = 0; i < getCount(); i++) {
- if (getItemId(i) == labelId) {
- return i;
- }
- }
- throw new NoSuchElementException();
+ @Override
+ public int getItemCount() {
+ return users.size();
}
- @NotNull
- @Override
- public View getView(int position, View convertView, @NotNull ViewGroup parent) {
- final View view;
- if (convertView == null) {
- view = inflater.inflate(android.R.layout.simple_list_item_multiple_choice, parent, false);
- } else {
- view = convertView;
+ public List<User> getSelected() {
+ return selectedUsers;
+ }
+
+ class UserViewHolder extends RecyclerView.ViewHolder {
+
+ // TODO Use ViewBinding
+ private TextView displayName;
+ private ImageView avatar;
+
+ UserViewHolder(@NonNull View itemView) {
+ super(itemView);
+ displayName = itemView.findViewById(R.id.displayName);
+ avatar = itemView.findViewById(R.id.avatar);
+ }
+
+ void bind(final User user) {
+ displayName.setText(user.getDisplayname());
+ ViewUtil.addAvatar(avatar, account.getUrl(), user.getUid(), avatarSize, R.drawable.ic_person_grey600_24dp);
+ itemView.setSelected(selectedUsers.contains(user));
+
+ itemView.setOnClickListener(view -> {
+ if (selectedUsers.contains(user)) {
+ selectedUsers.remove(user);
+ itemView.setSelected(false);
+ } else {
+ selectedUsers.add(user);
+ itemView.setSelected(true);
+ }
+ });
}
- ((TextView) view.findViewById(android.R.id.text1)).setText(getItem(position).getDisplayname());
- return view;
}
-}
+} \ No newline at end of file