Эх сурвалжийг харах

Merge pull request #7105 from nextcloud/viewBindingFileDetailsFragments

Replace butterknife with native view binding (File Details Fragments)
Tobias Kaminsky 4 жил өмнө
parent
commit
8dba90993d

+ 1 - 1
scripts/analysis/lint-results.txt

@@ -1,2 +1,2 @@
 DO NOT TOUCH; GENERATED BY DRONE
-      <span class="mdl-layout-title">Lint Report: 334 warnings</span>
+      <span class="mdl-layout-title">Lint Report: 307 warnings</span>

+ 61 - 106
src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java

@@ -31,19 +31,15 @@ import android.text.Editable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
 
 import com.google.android.material.snackbar.Snackbar;
-import com.google.android.material.textfield.TextInputEditText;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.network.ClientFactory;
 import com.nextcloud.common.NextcloudClient;
 import com.owncloud.android.R;
+import com.owncloud.android.databinding.FileDetailsActivitiesFragmentBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
@@ -81,11 +77,6 @@ import androidx.lifecycle.Lifecycle;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
-import butterknife.Unbinder;
 
 public class FileDetailActivitiesFragment extends Fragment implements
     ActivityListInterface,
@@ -99,7 +90,6 @@ public class FileDetailActivitiesFragment extends Fragment implements
     private static final int END_REACHED = 0;
 
     private ActivityAndVersionListAdapter adapter;
-    private Unbinder unbinder;
     private OwnCloudClient ownCloudClient;
     private NextcloudClient nextcloudClient;
 
@@ -109,43 +99,12 @@ public class FileDetailActivitiesFragment extends Fragment implements
     private int lastGiven;
     private boolean isLoadingActivities;
 
-    @BindView(R.id.empty_list_view)
-    public LinearLayout emptyContentContainer;
-
-    @BindView(R.id.swipe_containing_list)
-    public SwipeRefreshLayout swipeListRefreshLayout;
-
-    @BindView(R.id.swipe_containing_empty)
-    public SwipeRefreshLayout swipeEmptyListRefreshLayout;
-
-    @BindView(R.id.empty_list_view_text)
-    public TextView emptyContentMessage;
-
-    @BindView(R.id.empty_list_view_headline)
-    public TextView emptyContentHeadline;
-
-    @BindView(R.id.empty_list_icon)
-    public ImageView emptyContentIcon;
-
-    @BindView(R.id.empty_list_progress)
-    public ProgressBar emptyContentProgressBar;
-
-    @BindView(android.R.id.list)
-    public RecyclerView recyclerView;
-
-    @BindView(R.id.commentInputField)
-    public TextInputEditText commentInput;
-
-    @BindString(R.string.activities_no_results_headline)
-    public String noResultsHeadline;
-
-    @BindString(R.string.activities_no_results_message)
-    public String noResultsMessage;
-
     private boolean restoreFileVersionSupported;
     private FileOperationsHelper operationsHelper;
     private VersionListInterface.CommentCallback callback;
 
+    private FileDetailsActivitiesFragmentBinding binding;
+
     @Inject UserAccountManager accountManager;
     @Inject ClientFactory clientFactory;
     @Inject ContentResolver contentResolver;
@@ -176,46 +135,47 @@ public class FileDetailActivitiesFragment extends Fragment implements
             user = savedInstanceState.getParcelable(ARG_USER);
         }
 
-        View view = inflater.inflate(R.layout.file_details_activities_fragment, container, false);
-        unbinder = ButterKnife.bind(this, view);
+        binding = FileDetailsActivitiesFragmentBinding.inflate(inflater,container,false);
+        View view = binding.getRoot();
 
         setupView();
 
-        ThemeUtils.colorSwipeRefreshLayout(getContext(), swipeEmptyListRefreshLayout);
-        ThemeUtils.colorSwipeRefreshLayout(getContext(), swipeListRefreshLayout);
+        ThemeUtils.colorSwipeRefreshLayout(getContext(), binding.swipeContainingEmpty);
+        ThemeUtils.colorSwipeRefreshLayout(getContext(), binding.swipeContainingList);
 
         fetchAndSetData(-1);
 
-        swipeListRefreshLayout.setOnRefreshListener(() -> onRefreshListLayout(swipeListRefreshLayout));
-        swipeEmptyListRefreshLayout.setOnRefreshListener(() -> onRefreshListLayout(swipeEmptyListRefreshLayout));
+        binding.swipeContainingList.setOnRefreshListener(() -> onRefreshListLayout(binding.swipeContainingList));
+        binding.swipeContainingEmpty.setOnRefreshListener(() -> onRefreshListLayout(binding.swipeContainingEmpty));
 
         callback = new VersionListInterface.CommentCallback() {
 
             @Override
             public void onSuccess() {
-                commentInput.getText().clear();
+                binding.commentInputField.getText().clear();
                 fetchAndSetData(-1);
             }
 
             @Override
             public void onError(int error) {
-                Snackbar.make(recyclerView, error, Snackbar.LENGTH_LONG).show();
+                Snackbar.make(binding.list, error, Snackbar.LENGTH_LONG).show();
             }
         };
 
-        commentInput.getBackground().setColorFilter(
+        binding.commentInputField.getBackground().setColorFilter(
                 ThemeUtils.primaryAccentColor(getContext()),
                 PorterDuff.Mode.SRC_ATOP
         );
 
-        ThemeUtils.themeEditText(getContext(), commentInput, false);
+        binding.submitComment.setOnClickListener(v -> submitComment());
+
+        ThemeUtils.themeEditText(getContext(), binding.commentInputField, false);
 
         return view;
     }
 
-    @OnClick(R.id.submitComment)
     public void submitComment() {
-        Editable commentField = commentInput.getText();
+        Editable commentField = binding.commentInputField.getText();
 
         if (commentField == null) {
             return;
@@ -237,16 +197,16 @@ public class FileDetailActivitiesFragment extends Fragment implements
     }
 
     private void setLoadingMessage() {
-        emptyContentHeadline.setText(R.string.file_list_loading);
-        emptyContentMessage.setText("");
-        emptyContentIcon.setVisibility(View.GONE);
-        emptyContentProgressBar.setVisibility(View.VISIBLE);
+        binding.emptyList.emptyListViewHeadline.setText(R.string.file_list_loading);
+        binding.emptyList.emptyListViewText.setText("");
+        binding.emptyList.emptyListIcon.setVisibility(View.GONE);
+        binding.emptyList.emptyListProgress.setVisibility(View.VISIBLE);
     }
 
     @Override
-    public void onDestroy() {
-        super.onDestroy();
-        unbinder.unbind();
+    public void onDestroyView() {
+        super.onDestroyView();
+        binding = null;
     }
 
     private void setupView() {
@@ -257,9 +217,9 @@ public class FileDetailActivitiesFragment extends Fragment implements
         OCCapability capability = storageManager.getCapability(user.getAccountName());
         restoreFileVersionSupported = capability.getFilesVersioning().isTrue();
 
-        emptyContentProgressBar.getIndeterminateDrawable().setColorFilter(ThemeUtils.primaryAccentColor(getContext()),
+        binding.emptyList.emptyListProgress.getIndeterminateDrawable().setColorFilter(ThemeUtils.primaryAccentColor(getContext()),
                                                                           PorterDuff.Mode.SRC_IN);
-        emptyContentIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_activity, null));
+        binding.emptyList.emptyListIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_activity, null));
 
         adapter = new ActivityAndVersionListAdapter(getContext(),
                                                     accountManager,
@@ -269,12 +229,12 @@ public class FileDetailActivitiesFragment extends Fragment implements
                                                     capability,
                                                     clientFactory
         );
-        recyclerView.setAdapter(adapter);
+        binding.list.setAdapter(adapter);
 
         LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
 
-        recyclerView.setLayoutManager(layoutManager);
-        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+        binding.list.setLayoutManager(layoutManager);
+        binding.list.addOnScrollListener(new RecyclerView.OnScrollListener() {
 
             @Override
             public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
@@ -309,8 +269,8 @@ public class FileDetailActivitiesFragment extends Fragment implements
             return;
         }
 
-        final SwipeRefreshLayout empty = swipeEmptyListRefreshLayout;
-        final SwipeRefreshLayout list = swipeListRefreshLayout;
+        final SwipeRefreshLayout empty = binding.swipeContainingEmpty;
+        final SwipeRefreshLayout list = binding.swipeContainingList;
         final User user = accountManager.getUser();
 
         if (user.isAnonymous()) {
@@ -374,7 +334,7 @@ public class FileDetailActivitiesFragment extends Fragment implements
                     // show error
                     String logMessage = result.getLogMessage();
                     if (result.getHttpCode() == HttpStatus.SC_NOT_MODIFIED) {
-                        logMessage = noResultsMessage;
+                        logMessage = getString(R.string.activities_no_results_message);
                     }
                     final String finalLogMessage = logMessage;
                     activity.runOnUiThread(() -> {
@@ -413,56 +373,51 @@ public class FileDetailActivitiesFragment extends Fragment implements
         adapter.setActivityAndVersionItems(activities, nextcloudClient, clear);
 
         if (adapter.getItemCount() == 0) {
-            setEmptyContent(noResultsHeadline, noResultsMessage);
-            swipeListRefreshLayout.setVisibility(View.GONE);
-            swipeEmptyListRefreshLayout.setVisibility(View.VISIBLE);
+            setEmptyContent(
+                getString(R.string.activities_no_results_headline),
+                getString(R.string.activities_no_results_message)
+                           );
+            binding.swipeContainingList.setVisibility(View.GONE);
+            binding.swipeContainingEmpty.setVisibility(View.VISIBLE);
         } else {
-            swipeListRefreshLayout.setVisibility(View.VISIBLE);
-            swipeEmptyListRefreshLayout.setVisibility(View.GONE);
+            binding.swipeContainingList.setVisibility(View.VISIBLE);
+            binding.swipeContainingEmpty.setVisibility(View.GONE);
         }
         isLoadingActivities = false;
     }
 
     private void setEmptyContent(String headline, String message) {
-        if (emptyContentContainer != null && emptyContentMessage != null) {
-            emptyContentIcon.setImageDrawable(ResourcesCompat.getDrawable(requireContext().getResources(),
-                                                                          R.drawable.ic_activity,
-                                                                          null));
-            emptyContentHeadline.setText(headline);
-            emptyContentMessage.setText(message);
-
-            emptyContentMessage.setVisibility(View.VISIBLE);
-            emptyContentProgressBar.setVisibility(View.GONE);
-            emptyContentIcon.setVisibility(View.VISIBLE);
-        }
+        binding.emptyList.emptyListIcon.setImageDrawable(ResourcesCompat.getDrawable(requireContext().getResources(),
+                                                                                     R.drawable.ic_activity,
+                                                                                     null));
+        binding.emptyList.emptyListViewHeadline.setText(headline);
+        binding.emptyList.emptyListViewText.setText(message);
+
+        binding.emptyList.emptyListViewText.setVisibility(View.VISIBLE);
+        binding.emptyList.emptyListProgress.setVisibility(View.GONE);
+        binding.emptyList.emptyListIcon.setVisibility(View.VISIBLE);
     }
 
     @VisibleForTesting
     public void setErrorContent(String message) {
-        if (emptyContentContainer != null && emptyContentMessage != null) {
-            emptyContentHeadline.setText(R.string.common_error);
-            emptyContentIcon.setImageDrawable(ResourcesCompat.getDrawable(requireContext().getResources(),
-                                                                          R.drawable.ic_list_empty_error,
-                                                                          null));
-            emptyContentMessage.setText(message);
-
-            emptyContentMessage.setVisibility(View.VISIBLE);
-            emptyContentProgressBar.setVisibility(View.GONE);
-            emptyContentIcon.setVisibility(View.VISIBLE);
-            swipeListRefreshLayout.setVisibility(View.GONE);
-            swipeEmptyListRefreshLayout.setVisibility(View.VISIBLE);
-        }
+        binding.emptyList.emptyListViewHeadline.setText(R.string.common_error);
+        binding.emptyList.emptyListIcon.setImageDrawable(ResourcesCompat.getDrawable(requireContext().getResources(),
+                                                                                     R.drawable.ic_list_empty_error,
+                                                                                     null));
+        binding.emptyList.emptyListViewText.setText(message);
+
+        binding.emptyList.emptyListViewText.setVisibility(View.VISIBLE);
+        binding.emptyList.emptyListProgress.setVisibility(View.GONE);
+        binding.emptyList.emptyListIcon.setVisibility(View.VISIBLE);
+        binding.swipeContainingList.setVisibility(View.GONE);
+        binding.swipeContainingEmpty.setVisibility(View.VISIBLE);
     }
 
     private void hideRefreshLayoutLoader(FragmentActivity activity) {
         activity.runOnUiThread(() -> {
             if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
-                if (swipeListRefreshLayout != null) {
-                    swipeListRefreshLayout.setRefreshing(false);
-                }
-                if (swipeEmptyListRefreshLayout != null) {
-                    swipeEmptyListRefreshLayout.setRefreshing(false);
-                }
+                binding.swipeContainingList.setRefreshing(false);
+                binding.swipeContainingEmpty.setRefreshing(false);
                 isLoadingActivities = false;
             }
         });

+ 47 - 107
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -34,12 +34,8 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.PopupMenu;
 import android.widget.ProgressBar;
-import android.widget.TextView;
 
 import com.google.android.material.tabs.TabLayout;
 import com.nextcloud.client.account.User;
@@ -50,6 +46,7 @@ import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
+import com.owncloud.android.databinding.FileDetailsFragmentBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
@@ -74,10 +71,6 @@ import javax.inject.Inject;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.core.content.res.ResourcesCompat;
-import androidx.viewpager.widget.ViewPager;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
 
 /**
  * This Fragment is used to display the details about a file.
@@ -90,61 +83,11 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private static final String ARG_FILE = "FILE";
     private static final String ARG_USER = "USER";
     private static final String ARG_ACTIVE_TAB = "TAB";
-
-    @BindView(R.id.detail_container)
-    LinearLayout detailContainer;
-
-    @BindView(R.id.progressBlock)
-    View downloadProgressContainer;
-
-    @BindView(R.id.cancelBtn)
-    ImageButton cancelButton;
-
-    @BindView(R.id.progressBar)
-    ProgressBar progressBar;
-
-    @BindView(R.id.progressText)
-    TextView progressText;
-
-    @BindView(R.id.filename)
-    TextView fileName;
-
-    @BindView(R.id.size)
-    TextView fileSize;
-
-    @BindView(R.id.last_modification_timestamp)
-    TextView fileModifiedTimestamp;
-
-    @BindView(R.id.favorite)
-    ImageView favoriteIcon;
-
-    @BindView(R.id.overflow_menu)
-    ImageView overflowMenu;
-
-    @BindView(R.id.tab_layout)
-    TabLayout tabLayout;
-
-    @BindView(R.id.pager)
-    ViewPager viewPager;
-
-    @BindView(R.id.empty_list_view)
-    public LinearLayout emptyContentContainer;
-
-    @BindView(R.id.empty_list_view_headline)
-    public TextView emptyContentHeadline;
-
-    @BindView(R.id.empty_list_icon)
-    public ImageView emptyContentIcon;
-
-    @BindView(R.id.empty_list_progress)
-    public ProgressBar emptyContentProgressBar;
-
-    private int layout;
     private View view;
     private User user;
-    private Unbinder unbinder;
     private boolean previewLoaded;
 
+    private FileDetailsFragmentBinding binding;
     private ProgressListener progressListener;
     private ToolbarActivity toolbarActivity;
     private int activeTab;
@@ -201,7 +144,6 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     public FileDetailFragment() {
         super();
         user = null;
-        layout = R.layout.file_details_fragment;
         progressListener = null;
     }
 
@@ -211,7 +153,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
      * @return reference to the {@link FileDetailSharingFragment}
      */
     public FileDetailSharingFragment getFileDetailSharingFragment() {
-        return ((FileDetailTabAdapter)viewPager.getAdapter()).getFileDetailSharingFragment();
+        return ((FileDetailTabAdapter) binding.pager.getAdapter()).getFileDetailSharingFragment();
     }
 
     /**
@@ -220,7 +162,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
      * @return reference to the {@link FileDetailActivitiesFragment}
      */
     public FileDetailActivitiesFragment getFileDetailActivitiesFragment() {
-        return ((FileDetailTabAdapter) viewPager.getAdapter()).getFileDetailActivitiesFragment();
+        return ((FileDetailTabAdapter) binding.pager.getAdapter()).getFileDetailActivitiesFragment();
     }
 
     @Override
@@ -247,13 +189,13 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
             user = savedInstanceState.getParcelable(ARG_USER);
         }
 
-        view = inflater.inflate(layout, null);
-        unbinder = ButterKnife.bind(this, view);
+        binding = FileDetailsFragmentBinding.inflate(inflater,container,false);
+        view = binding.getRoot();
 
         if (getFile() == null || user == null) {
             showEmptyContent();
         } else {
-            emptyContentContainer.setVisibility(View.GONE);
+            binding.emptyList.emptyListView.setVisibility(View.GONE);
         }
 
         return view;
@@ -262,12 +204,12 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         if (getFile() != null && user != null) {
-            ThemeUtils.colorHorizontalProgressBar(progressBar, ThemeUtils.primaryAccentColor(getContext()));
-            progressListener = new ProgressListener(progressBar);
-            cancelButton.setOnClickListener(this);
-            favoriteIcon.setOnClickListener(this);
-            overflowMenu.setOnClickListener(this);
-            fileModifiedTimestamp.setOnClickListener(this);
+            ThemeUtils.colorHorizontalProgressBar(binding.progressBar, ThemeUtils.primaryAccentColor(getContext()));
+            progressListener = new ProgressListener(binding.progressBar);
+            binding.cancelBtn.setOnClickListener(this);
+            binding.favorite.setOnClickListener(this);
+            binding.overflowMenu.setOnClickListener(this);
+            binding.lastModificationTimestamp.setOnClickListener(this);
 
             updateFileDetails(false, false);
         }
@@ -283,17 +225,17 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     }
 
     private void setupViewPager() {
-        tabLayout.removeAllTabs();
+        binding.tabLayout.removeAllTabs();
 
-        tabLayout.addTab(tabLayout.newTab().setText(R.string.drawer_item_activities));
-        tabLayout.addTab(tabLayout.newTab().setText(R.string.share_dialog_title));
+        binding.tabLayout.addTab(binding.tabLayout.newTab().setText(R.string.drawer_item_activities));
+        binding.tabLayout.addTab(binding.tabLayout.newTab().setText(R.string.share_dialog_title));
 
-        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
-        tabLayout.setSelectedTabIndicatorColor(ThemeUtils.primaryAccentColor(getContext()));
+        binding.tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
+        binding.tabLayout.setSelectedTabIndicatorColor(ThemeUtils.primaryAccentColor(getContext()));
 
         final FileDetailTabAdapter adapter = new FileDetailTabAdapter(getFragmentManager(), getFile(), user);
-        viewPager.setAdapter(adapter);
-        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout) {
+        binding.pager.setAdapter(adapter);
+        binding.pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(binding.tabLayout) {
             @Override
             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                 if (activeTab == 0) {
@@ -303,10 +245,10 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
                 super.onPageScrolled(position, positionOffset, positionOffsetPixels);
             }
         });
-        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+        binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
             @Override
             public void onTabSelected(TabLayout.Tab tab) {
-                viewPager.setCurrentItem(tab.getPosition());
+                binding.pager.setCurrentItem(tab.getPosition());
 
                 if (tab.getPosition() == 0) {
                     FileDetailActivitiesFragment fragment = getFileDetailActivitiesFragment();
@@ -328,7 +270,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
             }
         });
 
-        tabLayout.getTabAt(activeTab).select();
+        binding.tabLayout.getTabAt(activeTab).select();
     }
 
     @Override
@@ -383,9 +325,9 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     }
 
     @Override
-    public void onDestroy() {
-        super.onDestroy();
-        unbinder.unbind();
+    public void onDestroyView() {
+        super.onDestroyView();
+        binding = null;
     }
 
     @Override
@@ -504,7 +446,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
      * @return True when the fragment was created with the empty layout.
      */
     public boolean isEmpty() {
-        return layout == R.layout.empty_list || getFile() == null || user == null;
+        return getFile() == null || user == null;
     }
 
     /**
@@ -543,11 +485,11 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
 
             // set file details
             if (MimeTypeUtil.isImage(file)) {
-                fileName.setText(file.getFileName());
+                binding.filename.setText(file.getFileName());
             } else {
-                fileName.setVisibility(View.GONE);
+                binding.filename.setVisibility(View.GONE);
             }
-            fileSize.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));
+            binding.size.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));
 
             boolean showDetailedTimestamp = preferences.isShowDetailedTimestampEnabled();
             setFileModificationTimestamp(file, showDetailedTimestamp);
@@ -581,18 +523,18 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
 
     private void setFileModificationTimestamp(OCFile file, boolean showDetailedTimestamp) {
         if (showDetailedTimestamp) {
-            fileModifiedTimestamp.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));
+            binding.lastModificationTimestamp.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));
         } else {
-            fileModifiedTimestamp.setText(DisplayUtils.getRelativeTimestamp(getContext(),
+            binding.lastModificationTimestamp.setText(DisplayUtils.getRelativeTimestamp(getContext(),
                                                                             file.getModificationTimestamp()));
         }
     }
 
     private void setFavoriteIconStatus(boolean isFavorite) {
         if (isFavorite) {
-            favoriteIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_star, null));
+            binding.favorite.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_star, null));
         } else {
-            favoriteIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(),
+            binding.favorite.setImageDrawable(ResourcesCompat.getDrawable(getResources(),
                                                                       R.drawable.ic_star_outline,
                                                                       null));
         }
@@ -604,7 +546,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
      * @return 'True' when the fragment is ready to show details of a file
      */
     private boolean readyToShow() {
-        return getFile() != null && user != null && layout == R.layout.file_details_fragment;
+        return getFile() != null && user != null;
     }
 
     /**
@@ -670,17 +612,17 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private void setButtonsForTransferring() {
         if (!isEmpty()) {
             // show the progress bar for the transfer
-            downloadProgressContainer.setVisibility(View.VISIBLE);
-            progressText.setVisibility(View.VISIBLE);
+            binding.progressBlock.setVisibility(View.VISIBLE);
+            binding.progressText.setVisibility(View.VISIBLE);
             FileDownloaderBinder downloaderBinder = containerActivity.getFileDownloaderBinder();
             FileUploaderBinder uploaderBinder = containerActivity.getFileUploaderBinder();
             //if (getFile().isDownloading()) {
             if (downloaderBinder != null && downloaderBinder.isDownloading(user, getFile())) {
-                progressText.setText(R.string.downloader_download_in_progress_ticker);
+                binding.progressText.setText(R.string.downloader_download_in_progress_ticker);
             }
             else {
                 if (uploaderBinder != null && uploaderBinder.isUploading(user, getFile())) {
-                    progressText.setText(R.string.uploader_upload_in_progress_ticker);
+                    binding.progressText.setText(R.string.uploader_upload_in_progress_ticker);
                 }
             }
         }
@@ -692,7 +634,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private void setButtonsForDown() {
         if (!isEmpty()) {
             // hides the progress bar
-            downloadProgressContainer.setVisibility(View.GONE);
+            binding.progressBlock.setVisibility(View.GONE);
         }
     }
 
@@ -702,7 +644,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private void setButtonsForRemote() {
         if (!isEmpty()) {
             // hides the progress bar
-            downloadProgressContainer.setVisibility(View.GONE);
+            binding.progressBlock.setVisibility(View.GONE);
         }
     }
 
@@ -735,16 +677,14 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     }
 
     private void showEmptyContent() {
-        if (emptyContentContainer != null) {
-            emptyContentContainer.setVisibility(View.VISIBLE);
-            detailContainer.setVisibility(View.GONE);
+        binding.emptyList.emptyListView.setVisibility(View.VISIBLE);
+        binding.detailContainer.setVisibility(View.GONE);
 
-            emptyContentHeadline.setText(R.string.file_details_no_content);
+        binding.emptyList.emptyListViewHeadline.setText(R.string.file_details_no_content);
 
-            emptyContentProgressBar.setVisibility(View.GONE);
-            emptyContentIcon.setImageResource(R.drawable.ic_list_empty_error);
-            emptyContentIcon.setVisibility(View.VISIBLE);
-        }
+        binding.emptyList.emptyListProgress.setVisibility(View.GONE);
+        binding.emptyList.emptyListIcon.setImageResource(R.drawable.ic_list_empty_error);
+        binding.emptyList.emptyListIcon.setVisibility(View.VISIBLE);
     }
 
     /**

+ 2 - 2
src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

@@ -180,8 +180,8 @@ public class FileDetailSharingFragment extends Fragment implements ShareeListAda
     }
 
     @Override
-    public void onDestroy() {
-        super.onDestroy();
+    public void onDestroyView() {
+        super.onDestroyView();
         binding = null;
     }
 

+ 3 - 1
src/main/res/layout/file_details_activities_fragment.xml

@@ -79,7 +79,9 @@
         android:footerDividersEnabled="false"
         android:visibility="visible">
 
-        <include layout="@layout/empty_list"/>
+        <include
+            android:id="@+id/empty_list"
+            layout="@layout/empty_list" />
     </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
 
 </LinearLayout>

+ 3 - 1
src/main/res/layout/file_details_fragment.xml

@@ -185,5 +185,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-    <include layout="@layout/empty_list" />
+    <include
+        android:id="@+id/empty_list"
+        layout="@layout/empty_list" />
 </LinearLayout>