From 0677607dc45c8b11c10f1f5bff01d4c0b5e3bef4 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 25 Feb 2022 11:19:17 +0100 Subject: [PATCH] migrate FlexibleItems to native view bindings Signed-off-by: Andy Scherzinger --- .../talk/adapters/items/AdvancedUserItem.java | 60 ++++++------- .../adapters/items/BrowserFileItem.java | 90 +++++++++---------- 2 files changed, 68 insertions(+), 82 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java index d1eb5beb3..19a0b9d4b 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java @@ -2,6 +2,8 @@ * Nextcloud Talk application * * @author Mario Danic + * @author Andy Scherzinger + * Copyright (C) 2022 Andy Scherzinger * Copyright (C) 2017 Mario Danic (mario@lovelyhq.com) * * This program is free software: you can redistribute it and/or modify @@ -24,17 +26,12 @@ import android.accounts.Account; import android.net.Uri; import android.text.TextUtils; import android.view.View; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; -import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; +import com.nextcloud.talk.databinding.AccountItemBinding; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.utils.ApiUtils; @@ -44,9 +41,6 @@ import java.util.List; import java.util.regex.Pattern; import androidx.annotation.Nullable; -import androidx.emoji.widget.EmojiTextView; -import butterknife.BindView; -import butterknife.ButterKnife; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; @@ -56,10 +50,10 @@ import eu.davidea.viewholders.FlexibleViewHolder; public class AdvancedUserItem extends AbstractFlexibleItem implements IFilterable { - private Participant participant; - private UserEntity userEntity; + private final Participant participant; + private final UserEntity userEntity; @Nullable - private Account account; + private final Account account; public AdvancedUserItem(Participant participant, UserEntity userEntity, @Nullable Account account) { this.participant = participant; @@ -110,68 +104,70 @@ public class AdvancedUserItem extends AbstractFlexibleItem * Copyright (C) 2017-2018 Mario Danic * * This program is free software: you can redistribute it and/or modify @@ -24,20 +26,14 @@ import android.content.Context; import android.text.format.Formatter; import android.view.View; import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.TextView; import android.widget.Toast; -import androidx.appcompat.content.res.AppCompatResources; -import autodagger.AutoInjector; -import butterknife.BindView; -import butterknife.ButterKnife; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; -import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.components.filebrowser.models.BrowserFile; +import com.nextcloud.talk.databinding.RvItemBrowserFileBinding; import com.nextcloud.talk.interfaces.SelectionInterface; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.ApiUtils; @@ -49,9 +45,8 @@ import java.util.List; import javax.inject.Inject; +import androidx.appcompat.content.res.AppCompatResources; import autodagger.AutoInjector; -import butterknife.BindView; -import butterknife.ButterKnife; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; @@ -59,12 +54,12 @@ import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.viewholders.FlexibleViewHolder; @AutoInjector(NextcloudTalkApplication.class) -public class BrowserFileItem extends AbstractFlexibleItem implements IFilterable { +public class BrowserFileItem extends AbstractFlexibleItem implements IFilterable { @Inject Context context; - private BrowserFile browserFile; - private UserEntity activeUser; - private SelectionInterface selectionInterface; + private final BrowserFile browserFile; + private final UserEntity activeUser; + private final SelectionInterface selectionInterface; private boolean selected; public BrowserFileItem(BrowserFile browserFile, UserEntity activeUser, SelectionInterface selectionInterface) { @@ -94,9 +89,8 @@ public class BrowserFileItem extends AbstractFlexibleItem adapter) { - return new ViewHolder(view, adapter); - + public BrowserFileItemViewHolder createViewHolder(View view, FlexibleAdapter adapter) { + return new BrowserFileItemViewHolder(view, adapter); } private boolean isSelected() { @@ -108,8 +102,11 @@ public class BrowserFileItem extends AbstractFlexibleItem adapter, ViewHolder holder, int position, List payloads) { - holder.fileIconImageView.setController(null); + public void bindViewHolder(FlexibleAdapter adapter, + BrowserFileItemViewHolder holder, + int position, + List payloads) { + holder.binding.fileIcon.setController(null); if (!browserFile.isAllowedToReShare() || browserFile.isEncrypted()) { holder.itemView.setEnabled(false); holder.itemView.setAlpha(0.38f); @@ -119,31 +116,32 @@ public class BrowserFileItem extends AbstractFlexibleItem