mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-12 02:19:44 +00:00
migrate FlexibleItems to native view bindings
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
d4f9f996c3
commit
0677607dc4
@ -2,6 +2,8 @@
|
|||||||
* Nextcloud Talk application
|
* Nextcloud Talk application
|
||||||
*
|
*
|
||||||
* @author Mario Danic
|
* @author Mario Danic
|
||||||
|
* @author Andy Scherzinger
|
||||||
|
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
||||||
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
|
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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.net.Uri;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
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.backends.pipeline.Fresco;
|
||||||
import com.facebook.drawee.interfaces.DraweeController;
|
import com.facebook.drawee.interfaces.DraweeController;
|
||||||
import com.facebook.drawee.view.SimpleDraweeView;
|
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
|
import com.nextcloud.talk.databinding.AccountItemBinding;
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
import com.nextcloud.talk.models.database.UserEntity;
|
||||||
import com.nextcloud.talk.models.json.participants.Participant;
|
import com.nextcloud.talk.models.json.participants.Participant;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
@ -44,9 +41,6 @@ import java.util.List;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.emoji.widget.EmojiTextView;
|
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
@ -56,10 +50,10 @@ import eu.davidea.viewholders.FlexibleViewHolder;
|
|||||||
public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.UserItemViewHolder> implements
|
public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.UserItemViewHolder> implements
|
||||||
IFilterable<String> {
|
IFilterable<String> {
|
||||||
|
|
||||||
private Participant participant;
|
private final Participant participant;
|
||||||
private UserEntity userEntity;
|
private final UserEntity userEntity;
|
||||||
@Nullable
|
@Nullable
|
||||||
private Account account;
|
private final Account account;
|
||||||
|
|
||||||
public AdvancedUserItem(Participant participant, UserEntity userEntity, @Nullable Account account) {
|
public AdvancedUserItem(Participant participant, UserEntity userEntity, @Nullable Account account) {
|
||||||
this.participant = participant;
|
this.participant = participant;
|
||||||
@ -110,68 +104,70 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void bindViewHolder(FlexibleAdapter adapter, UserItemViewHolder holder, int position, List payloads) {
|
public void bindViewHolder(FlexibleAdapter adapter, UserItemViewHolder holder, int position, List payloads) {
|
||||||
holder.avatarImageView.setController(null);
|
holder.binding.userIcon.setController(null);
|
||||||
|
|
||||||
if (adapter.hasFilter()) {
|
if (adapter.hasFilter()) {
|
||||||
FlexibleUtils.highlightText(
|
FlexibleUtils.highlightText(
|
||||||
holder.contactDisplayName,
|
holder.binding.userName,
|
||||||
participant.getDisplayName(),
|
participant.getDisplayName(),
|
||||||
String.valueOf(adapter.getFilter(String.class)),
|
String.valueOf(adapter.getFilter(String.class)),
|
||||||
NextcloudTalkApplication.Companion.getSharedApplication()
|
NextcloudTalkApplication.Companion.getSharedApplication()
|
||||||
.getResources()
|
.getResources()
|
||||||
.getColor(R.color.colorPrimary));
|
.getColor(R.color.colorPrimary));
|
||||||
} else {
|
} else {
|
||||||
holder.contactDisplayName.setText(participant.getDisplayName());
|
holder.binding.userName.setText(participant.getDisplayName());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userEntity != null && !TextUtils.isEmpty(userEntity.getBaseUrl())) {
|
if (userEntity != null && !TextUtils.isEmpty(userEntity.getBaseUrl())) {
|
||||||
String host = Uri.parse(userEntity.getBaseUrl()).getHost();
|
String host = Uri.parse(userEntity.getBaseUrl()).getHost();
|
||||||
if (!TextUtils.isEmpty(host)) {
|
if (!TextUtils.isEmpty(host)) {
|
||||||
holder.serverUrl.setText(Uri.parse(userEntity.getBaseUrl()).getHost());
|
holder.binding.account.setText(Uri.parse(userEntity.getBaseUrl()).getHost());
|
||||||
} else {
|
} else {
|
||||||
holder.serverUrl.setText(userEntity.getBaseUrl());
|
holder.binding.account.setText(userEntity.getBaseUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.avatarImageView.getHierarchy().setPlaceholderImage(R.drawable.account_circle_48dp);
|
holder.binding.userIcon.getHierarchy().setPlaceholderImage(R.drawable.account_circle_48dp);
|
||||||
holder.avatarImageView.getHierarchy().setFailureImage(R.drawable.account_circle_48dp);
|
holder.binding.userIcon.getHierarchy().setFailureImage(R.drawable.account_circle_48dp);
|
||||||
|
|
||||||
if (userEntity != null && userEntity.getBaseUrl() != null &&
|
if (userEntity != null && userEntity.getBaseUrl() != null &&
|
||||||
userEntity.getBaseUrl().startsWith("http://") ||
|
userEntity.getBaseUrl().startsWith("http://") ||
|
||||||
userEntity.getBaseUrl().startsWith("https://")) {
|
userEntity.getBaseUrl().startsWith("https://")) {
|
||||||
|
|
||||||
DraweeController draweeController = Fresco.newDraweeControllerBuilder()
|
DraweeController draweeController = Fresco.newDraweeControllerBuilder()
|
||||||
.setOldController(holder.avatarImageView.getController())
|
.setOldController(holder.binding.userIcon.getController())
|
||||||
.setAutoPlayAnimations(true)
|
.setAutoPlayAnimations(true)
|
||||||
.setImageRequest(DisplayUtils.getImageRequestForUrl(ApiUtils.getUrlForAvatarWithName(userEntity.getBaseUrl(),
|
.setImageRequest(
|
||||||
participant.getActorId(), R.dimen.small_item_height), null))
|
DisplayUtils.getImageRequestForUrl(
|
||||||
|
ApiUtils.getUrlForAvatarWithName(
|
||||||
|
userEntity.getBaseUrl(),
|
||||||
|
participant.getActorId(),
|
||||||
|
R.dimen.small_item_height),
|
||||||
|
null))
|
||||||
.build();
|
.build();
|
||||||
holder.avatarImageView.setController(draweeController);
|
holder.binding.userIcon.setController(draweeController);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean filter(String constraint) {
|
public boolean filter(String constraint) {
|
||||||
return participant.getDisplayName() != null &&
|
return participant.getDisplayName() != null &&
|
||||||
Pattern.compile(constraint, Pattern.CASE_INSENSITIVE | Pattern.LITERAL).matcher(participant.getDisplayName().trim()).find();
|
Pattern
|
||||||
|
.compile(constraint, Pattern.CASE_INSENSITIVE | Pattern.LITERAL)
|
||||||
|
.matcher(participant.getDisplayName().trim())
|
||||||
|
.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static class UserItemViewHolder extends FlexibleViewHolder {
|
static class UserItemViewHolder extends FlexibleViewHolder {
|
||||||
|
|
||||||
@BindView(R.id.user_name)
|
public AccountItemBinding binding;
|
||||||
public EmojiTextView contactDisplayName;
|
|
||||||
@BindView(R.id.account)
|
|
||||||
public TextView serverUrl;
|
|
||||||
@BindView(R.id.user_icon)
|
|
||||||
public SimpleDraweeView avatarImageView;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*/
|
*/
|
||||||
UserItemViewHolder(View view, FlexibleAdapter adapter) {
|
UserItemViewHolder(View view, FlexibleAdapter adapter) {
|
||||||
super(view, adapter);
|
super(view, adapter);
|
||||||
ButterKnife.bind(this, view);
|
binding = AccountItemBinding.bind(view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
* Nextcloud Talk application
|
* Nextcloud Talk application
|
||||||
*
|
*
|
||||||
* @author Mario Danic
|
* @author Mario Danic
|
||||||
|
* @author Andy Scherzinger
|
||||||
|
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
||||||
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
|
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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.text.format.Formatter;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import android.widget.Toast;
|
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.backends.pipeline.Fresco;
|
||||||
import com.facebook.drawee.interfaces.DraweeController;
|
import com.facebook.drawee.interfaces.DraweeController;
|
||||||
import com.facebook.drawee.view.SimpleDraweeView;
|
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.components.filebrowser.models.BrowserFile;
|
import com.nextcloud.talk.components.filebrowser.models.BrowserFile;
|
||||||
|
import com.nextcloud.talk.databinding.RvItemBrowserFileBinding;
|
||||||
import com.nextcloud.talk.interfaces.SelectionInterface;
|
import com.nextcloud.talk.interfaces.SelectionInterface;
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
import com.nextcloud.talk.models.database.UserEntity;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
@ -49,9 +45,8 @@ import java.util.List;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import androidx.appcompat.content.res.AppCompatResources;
|
||||||
import autodagger.AutoInjector;
|
import autodagger.AutoInjector;
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
@ -59,12 +54,12 @@ import eu.davidea.flexibleadapter.items.IFlexible;
|
|||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHolder> implements IFilterable<String> {
|
public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.BrowserFileItemViewHolder> implements IFilterable<String> {
|
||||||
@Inject
|
@Inject
|
||||||
Context context;
|
Context context;
|
||||||
private BrowserFile browserFile;
|
private final BrowserFile browserFile;
|
||||||
private UserEntity activeUser;
|
private final UserEntity activeUser;
|
||||||
private SelectionInterface selectionInterface;
|
private final SelectionInterface selectionInterface;
|
||||||
private boolean selected;
|
private boolean selected;
|
||||||
|
|
||||||
public BrowserFileItem(BrowserFile browserFile, UserEntity activeUser, SelectionInterface selectionInterface) {
|
public BrowserFileItem(BrowserFile browserFile, UserEntity activeUser, SelectionInterface selectionInterface) {
|
||||||
@ -94,9 +89,8 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ViewHolder createViewHolder(View view, FlexibleAdapter<IFlexible> adapter) {
|
public BrowserFileItemViewHolder createViewHolder(View view, FlexibleAdapter<IFlexible> adapter) {
|
||||||
return new ViewHolder(view, adapter);
|
return new BrowserFileItemViewHolder(view, adapter);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSelected() {
|
private boolean isSelected() {
|
||||||
@ -108,8 +102,11 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void bindViewHolder(FlexibleAdapter<IFlexible> adapter, ViewHolder holder, int position, List<Object> payloads) {
|
public void bindViewHolder(FlexibleAdapter<IFlexible> adapter,
|
||||||
holder.fileIconImageView.setController(null);
|
BrowserFileItemViewHolder holder,
|
||||||
|
int position,
|
||||||
|
List<Object> payloads) {
|
||||||
|
holder.binding.fileIcon.setController(null);
|
||||||
if (!browserFile.isAllowedToReShare() || browserFile.isEncrypted()) {
|
if (!browserFile.isAllowedToReShare() || browserFile.isEncrypted()) {
|
||||||
holder.itemView.setEnabled(false);
|
holder.itemView.setEnabled(false);
|
||||||
holder.itemView.setAlpha(0.38f);
|
holder.itemView.setAlpha(0.38f);
|
||||||
@ -119,31 +116,32 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (browserFile.isEncrypted()) {
|
if (browserFile.isEncrypted()) {
|
||||||
holder.fileEncryptedImageView.setVisibility(View.VISIBLE);
|
holder.binding.fileEncryptedImageView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
holder.fileEncryptedImageView.setVisibility(View.GONE);
|
holder.binding.fileEncryptedImageView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (browserFile.isFavorite()) {
|
if (browserFile.isFavorite()) {
|
||||||
holder.fileFavoriteImageView.setVisibility(View.VISIBLE);
|
holder.binding.fileFavoriteImageView.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
holder.fileFavoriteImageView.setVisibility(View.GONE);
|
holder.binding.fileFavoriteImageView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectionInterface.shouldOnlySelectOneImageFile()) {
|
if (selectionInterface.shouldOnlySelectOneImageFile()) {
|
||||||
if (browserFile.isFile && browserFile.mimeType.startsWith("image/")) {
|
if (browserFile.isFile && browserFile.mimeType.startsWith("image/")) {
|
||||||
holder.selectFileCheckbox.setVisibility(View.VISIBLE);
|
holder.binding.selectFileCheckbox.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
holder.selectFileCheckbox.setVisibility(View.GONE);
|
holder.binding.selectFileCheckbox.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
holder.selectFileCheckbox.setVisibility(View.VISIBLE);
|
holder.binding.selectFileCheckbox.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context != null) {
|
if (context != null) {
|
||||||
holder
|
holder
|
||||||
.fileIconImageView
|
.binding
|
||||||
|
.fileIcon
|
||||||
.getHierarchy()
|
.getHierarchy()
|
||||||
.setPlaceholderImage(
|
.setPlaceholderImage(
|
||||||
AppCompatResources.getDrawable(
|
AppCompatResources.getDrawable(
|
||||||
@ -160,25 +158,28 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHo
|
|||||||
.setAutoPlayAnimations(true)
|
.setAutoPlayAnimations(true)
|
||||||
.setImageRequest(DisplayUtils.getImageRequestForUrl(path, null))
|
.setImageRequest(DisplayUtils.getImageRequestForUrl(path, null))
|
||||||
.build();
|
.build();
|
||||||
holder.fileIconImageView.setController(draweeController);
|
holder.binding.fileIcon.setController(draweeController);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.filenameTextView.setText(browserFile.getDisplayName());
|
holder.binding.filenameTextView.setText(browserFile.getDisplayName());
|
||||||
holder.fileModifiedTextView.setText(String.format(context.getString(R.string.nc_last_modified),
|
holder.binding.fileModifiedInfo.setText(String.format(context.getString(R.string.nc_last_modified),
|
||||||
Formatter.formatShortFileSize(context, browserFile.getSize()),
|
Formatter.formatShortFileSize(context, browserFile.getSize()),
|
||||||
DateUtils.INSTANCE.getLocalDateTimeStringFromTimestamp(browserFile.getModifiedTimestamp())));
|
DateUtils.INSTANCE.getLocalDateTimeStringFromTimestamp(browserFile.getModifiedTimestamp())));
|
||||||
setSelected(selectionInterface.isPathSelected(browserFile.getPath()));
|
setSelected(selectionInterface.isPathSelected(browserFile.getPath()));
|
||||||
holder.selectFileCheckbox.setChecked(isSelected());
|
holder.binding.selectFileCheckbox.setChecked(isSelected());
|
||||||
|
|
||||||
if (!browserFile.isEncrypted()) {
|
if (!browserFile.isEncrypted()) {
|
||||||
holder.selectFileCheckbox.setOnClickListener(new View.OnClickListener() {
|
holder.binding.selectFileCheckbox.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (!browserFile.isAllowedToReShare()) {
|
if (!browserFile.isAllowedToReShare()) {
|
||||||
((CheckBox) v).setChecked(false);
|
((CheckBox) v).setChecked(false);
|
||||||
Toast.makeText(context, context.getResources().getString(R.string.nc_file_browser_reshare_forbidden),
|
Toast.makeText(
|
||||||
Toast.LENGTH_LONG).show();
|
context,
|
||||||
|
context.getResources().getString(R.string.nc_file_browser_reshare_forbidden),
|
||||||
|
Toast.LENGTH_LONG)
|
||||||
|
.show();
|
||||||
} else if (((CheckBox) v).isChecked() != isSelected()) {
|
} else if (((CheckBox) v).isChecked() != isSelected()) {
|
||||||
setSelected(((CheckBox) v).isChecked());
|
setSelected(((CheckBox) v).isChecked());
|
||||||
selectionInterface.toggleBrowserItemSelection(browserFile.getPath());
|
selectionInterface.toggleBrowserItemSelection(browserFile.getPath());
|
||||||
@ -187,8 +188,8 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHo
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.filenameTextView.setSelected(true);
|
holder.binding.filenameTextView.setSelected(true);
|
||||||
holder.fileModifiedTextView.setSelected(true);
|
holder.binding.fileModifiedInfo.setSelected(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -196,24 +197,13 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.ViewHo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ViewHolder extends FlexibleViewHolder {
|
static class BrowserFileItemViewHolder extends FlexibleViewHolder {
|
||||||
|
|
||||||
@BindView(R.id.file_icon)
|
RvItemBrowserFileBinding binding;
|
||||||
public SimpleDraweeView fileIconImageView;
|
|
||||||
@BindView(R.id.file_modified_info)
|
|
||||||
public TextView fileModifiedTextView;
|
|
||||||
@BindView(R.id.filename_text_view)
|
|
||||||
public TextView filenameTextView;
|
|
||||||
@BindView(R.id.select_file_checkbox)
|
|
||||||
public CheckBox selectFileCheckbox;
|
|
||||||
@BindView(R.id.fileEncryptedImageView)
|
|
||||||
public ImageView fileEncryptedImageView;
|
|
||||||
@BindView(R.id.fileFavoriteImageView)
|
|
||||||
public ImageView fileFavoriteImageView;
|
|
||||||
|
|
||||||
ViewHolder(View view, FlexibleAdapter adapter) {
|
BrowserFileItemViewHolder(View view, FlexibleAdapter adapter) {
|
||||||
super(view, adapter);
|
super(view, adapter);
|
||||||
ButterKnife.bind(this, view);
|
binding = RvItemBrowserFileBinding.bind(view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user