Skip to content

Commit 161e2ed

Browse files
Migrated Bookmarks Package From Butterknife to ViewBinding (commons-app#5594)
* Butterknife to ViewBinding * code fix to pass all tests * code cleanup & binding added to tests
1 parent 3e5424e commit 161e2ed

File tree

9 files changed

+130
-139
lines changed

9 files changed

+130
-139
lines changed

app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,23 @@
55
import android.view.View;
66
import android.view.ViewGroup;
77

8-
import android.widget.FrameLayout;
98
import androidx.annotation.NonNull;
109
import androidx.annotation.Nullable;
1110
import androidx.fragment.app.FragmentManager;
12-
13-
import com.google.android.material.tabs.TabLayout;
14-
1511
import fr.free.nrw.commons.contributions.MainActivity;
12+
import fr.free.nrw.commons.databinding.FragmentBookmarksBinding;
1613
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
17-
import fr.free.nrw.commons.explore.ParentViewPager;
1814
import fr.free.nrw.commons.kvstore.JsonKvStore;
1915
import fr.free.nrw.commons.theme.BaseActivity;
2016
import javax.inject.Inject;
21-
22-
import butterknife.BindView;
23-
import butterknife.ButterKnife;
24-
import fr.free.nrw.commons.R;
2517
import fr.free.nrw.commons.contributions.ContributionController;
2618
import javax.inject.Named;
2719

2820
public class BookmarkFragment extends CommonsDaggerSupportFragment {
2921

3022
private FragmentManager supportFragmentManager;
3123
private BookmarksPagerAdapter adapter;
32-
@BindView(R.id.viewPagerBookmarks)
33-
ParentViewPager viewPager;
34-
@BindView(R.id.tab_layout)
35-
TabLayout tabLayout;
36-
@BindView(R.id.fragmentContainer)
37-
FrameLayout fragmentContainer;
24+
FragmentBookmarksBinding binding;
3825

3926
@Inject
4027
ContributionController controller;
@@ -54,7 +41,9 @@ public static BookmarkFragment newInstance() {
5441
}
5542

5643
public void setScroll(boolean canScroll) {
57-
viewPager.setCanScroll(canScroll);
44+
if (binding!=null) {
45+
binding.viewPagerBookmarks.setCanScroll(canScroll);
46+
}
5847
}
5948

6049
@Override
@@ -68,44 +57,49 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
6857
@Nullable final ViewGroup container,
6958
@Nullable final Bundle savedInstanceState) {
7059
super.onCreateView(inflater, container, savedInstanceState);
71-
View view = inflater.inflate(R.layout.fragment_bookmarks, container, false);
72-
ButterKnife.bind(this, view);
60+
binding = FragmentBookmarksBinding.inflate(inflater, container, false);
7361

7462
// Activity can call methods in the fragment by acquiring a
7563
// reference to the Fragment from FragmentManager, using findFragmentById()
7664
supportFragmentManager = getChildFragmentManager();
7765

7866
adapter = new BookmarksPagerAdapter(supportFragmentManager, getContext(),
7967
applicationKvStore.getBoolean("login_skipped"));
80-
viewPager.setAdapter(adapter);
81-
tabLayout.setupWithViewPager(viewPager);
68+
binding.viewPagerBookmarks.setAdapter(adapter);
69+
binding.tabLayout.setupWithViewPager(binding.viewPagerBookmarks);
8270

8371
((MainActivity) getActivity()).showTabs();
8472
((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
8573

8674
setupTabLayout();
87-
return view;
75+
return binding.getRoot();
8876
}
8977

9078
/**
9179
* This method sets up the tab layout. If the adapter has only one element it sets the
9280
* visibility of tabLayout to gone.
9381
*/
9482
public void setupTabLayout() {
95-
tabLayout.setVisibility(View.VISIBLE);
83+
binding.tabLayout.setVisibility(View.VISIBLE);
9684
if (adapter.getCount() == 1) {
97-
tabLayout.setVisibility(View.GONE);
85+
binding.tabLayout.setVisibility(View.GONE);
9886
}
9987
}
10088

10189

10290
public void onBackPressed() {
103-
if (((BookmarkListRootFragment) (adapter.getItem(tabLayout.getSelectedTabPosition())))
91+
if (((BookmarkListRootFragment) (adapter.getItem(binding.tabLayout.getSelectedTabPosition())))
10492
.backPressed()) {
10593
// The event is handled internally by the adapter , no further action required.
10694
return;
10795
}
10896
// Event is not handled by the adapter ( performed back action ) change action bar.
10997
((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
11098
}
99+
100+
@Override
101+
public void onDestroy() {
102+
super.onDestroy();
103+
binding = null;
104+
}
111105
}

app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import androidx.annotation.Nullable;
1313
import androidx.fragment.app.Fragment;
1414
import androidx.fragment.app.FragmentManager;
15-
import butterknife.BindView;
16-
import butterknife.ButterKnife;
1715
import fr.free.nrw.commons.Media;
1816
import fr.free.nrw.commons.R;
1917
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsFragment;
@@ -22,6 +20,7 @@
2220
import fr.free.nrw.commons.category.CategoryImagesCallback;
2321
import fr.free.nrw.commons.category.GridViewAdapter;
2422
import fr.free.nrw.commons.contributions.MainActivity;
23+
import fr.free.nrw.commons.databinding.FragmentFeaturedRootBinding;
2524
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
2625
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
2726
import fr.free.nrw.commons.navtab.NavTab;
@@ -39,8 +38,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple
3938
public Fragment listFragment;
4039
private BookmarksPagerAdapter bookmarksPagerAdapter;
4140

42-
@BindView(R.id.explore_container)
43-
FrameLayout container;
41+
FragmentFeaturedRootBinding binding;
4442

4543
public BookmarkListRootFragment() {
4644
//empty constructor necessary otherwise crashes on recreate
@@ -70,9 +68,8 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
7068
@Nullable final ViewGroup container,
7169
@Nullable final Bundle savedInstanceState) {
7270
super.onCreate(savedInstanceState);
73-
View view = inflater.inflate(R.layout.fragment_featured_root, container, false);
74-
ButterKnife.bind(this, view);
75-
return view;
71+
binding = FragmentFeaturedRootBinding.inflate(inflater, container, false);
72+
return binding.getRoot();
7673
}
7774

7875
@Override
@@ -241,8 +238,8 @@ void moveToContributionsFragment() {
241238
@Override
242239
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
243240
Log.d("deneme8", "on media clicked");
244-
container.setVisibility(View.VISIBLE);
245-
((BookmarkFragment) getParentFragment()).tabLayout.setVisibility(View.GONE);
241+
binding.exploreContainer.setVisibility(View.VISIBLE);
242+
((BookmarkFragment) getParentFragment()).binding.tabLayout.setVisibility(View.GONE);
246243
mediaDetails = MediaDetailPagerFragment.newInstance(false, true);
247244
((BookmarkFragment) getParentFragment()).setScroll(false);
248245
setFragment(mediaDetails, listFragment);
@@ -253,4 +250,10 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
253250
public void onBackStackChanged() {
254251

255252
}
253+
254+
@Override
255+
public void onDestroy() {
256+
super.onDestroy();
257+
binding = null;
258+
}
256259
}

app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@
1212
import androidx.annotation.Nullable;
1313
import androidx.recyclerview.widget.LinearLayoutManager;
1414
import androidx.recyclerview.widget.RecyclerView;
15-
import butterknife.BindView;
16-
import butterknife.ButterKnife;
1715
import dagger.android.support.DaggerFragment;
1816
import fr.free.nrw.commons.R;
17+
import fr.free.nrw.commons.databinding.FragmentBookmarksItemsBinding;
1918
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem;
2019
import java.util.List;
2120
import javax.inject.Inject;
@@ -26,17 +25,7 @@
2625
*/
2726
public class BookmarkItemsFragment extends DaggerFragment {
2827

29-
@BindView(R.id.status_message)
30-
TextView statusTextView;
31-
32-
@BindView(R.id.loading_images_progress_bar)
33-
ProgressBar progressBar;
34-
35-
@BindView(R.id.list_view)
36-
RecyclerView recyclerView;
37-
38-
@BindView(R.id.parent_layout)
39-
RelativeLayout parentLayout;
28+
private FragmentBookmarksItemsBinding binding;
4029

4130
@Inject
4231
BookmarkItemsController controller;
@@ -51,16 +40,13 @@ public View onCreateView(
5140
final ViewGroup container,
5241
final Bundle savedInstanceState
5342
) {
54-
final View v = inflater.inflate(R.layout.fragment_bookmarks_items, container, false);
55-
ButterKnife.bind(this, v);
56-
return v;
43+
binding = FragmentBookmarksItemsBinding.inflate(inflater, container, false);
44+
return binding.getRoot();
5745
}
5846

5947
@Override
6048
public void onViewCreated(final @NotNull View view, @Nullable final Bundle savedInstanceState) {
6149
super.onViewCreated(view, savedInstanceState);
62-
progressBar.setVisibility(View.VISIBLE);
63-
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
6450
initList(requireContext());
6551
}
6652

@@ -77,13 +63,19 @@ public void onResume() {
7763
private void initList(final Context context) {
7864
final List<DepictedItem> depictItems = controller.loadFavoritesItems();
7965
final BookmarkItemsAdapter adapter = new BookmarkItemsAdapter(depictItems, context);
80-
recyclerView.setAdapter(adapter);
81-
progressBar.setVisibility(View.GONE);
66+
binding.listView.setAdapter(adapter);
67+
binding.loadingImagesProgressBar.setVisibility(View.GONE);
8268
if (depictItems.isEmpty()) {
83-
statusTextView.setText(R.string.bookmark_empty);
84-
statusTextView.setVisibility(View.VISIBLE);
69+
binding.statusMessage.setText(R.string.bookmark_empty);
70+
binding.statusMessage.setVisibility(View.VISIBLE);
8571
} else {
86-
statusTextView.setVisibility(View.GONE);
72+
binding.statusMessage.setVisibility(View.GONE);
8773
}
8874
}
75+
76+
@Override
77+
public void onDestroy() {
78+
super.onDestroy();
79+
binding = null;
80+
}
8981
}

app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import dagger.android.support.DaggerFragment;
2222
import fr.free.nrw.commons.R;
2323
import fr.free.nrw.commons.contributions.ContributionController;
24+
import fr.free.nrw.commons.databinding.FragmentBookmarksLocationsBinding;
2425
import fr.free.nrw.commons.nearby.Place;
2526
import fr.free.nrw.commons.nearby.fragments.CommonPlaceClickActions;
2627
import fr.free.nrw.commons.nearby.fragments.PlaceAdapter;
@@ -31,10 +32,7 @@
3132

3233
public class BookmarkLocationsFragment extends DaggerFragment {
3334

34-
@BindView(R.id.statusMessage) TextView statusTextView;
35-
@BindView(R.id.loadingImagesProgressBar) ProgressBar progressBar;
36-
@BindView(R.id.listView) RecyclerView recyclerView;
37-
@BindView(R.id.parentLayout) RelativeLayout parentLayout;
35+
public FragmentBookmarksLocationsBinding binding;
3836

3937
@Inject BookmarkLocationsController controller;
4038
@Inject ContributionController contributionController;
@@ -75,16 +73,15 @@ public View onCreateView(
7573
ViewGroup container,
7674
Bundle savedInstanceState
7775
) {
78-
View v = inflater.inflate(R.layout.fragment_bookmarks_locations, container, false);
79-
ButterKnife.bind(this, v);
80-
return v;
76+
binding = FragmentBookmarksLocationsBinding.inflate(inflater, container, false);
77+
return binding.getRoot();
8178
}
8279

8380
@Override
8481
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
8582
super.onViewCreated(view, savedInstanceState);
86-
progressBar.setVisibility(View.VISIBLE);
87-
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
83+
binding.loadingImagesProgressBar.setVisibility(View.VISIBLE);
84+
binding.listView.setLayoutManager(new LinearLayoutManager(getContext()));
8885
adapter = new PlaceAdapter(bookmarkLocationDao,
8986
place -> Unit.INSTANCE,
9087
(place, isBookmarked) -> {
@@ -94,7 +91,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
9491
commonPlaceClickActions,
9592
inAppCameraLocationPermissionLauncher
9693
);
97-
recyclerView.setAdapter(adapter);
94+
binding.listView.setAdapter(adapter);
9895
}
9996

10097
@Override
@@ -109,17 +106,23 @@ public void onResume() {
109106
private void initList() {
110107
List<Place> places = controller.loadFavoritesLocations();
111108
adapter.setItems(places);
112-
progressBar.setVisibility(View.GONE);
109+
binding.loadingImagesProgressBar.setVisibility(View.GONE);
113110
if (places.size() <= 0) {
114-
statusTextView.setText(R.string.bookmark_empty);
115-
statusTextView.setVisibility(View.VISIBLE);
111+
binding.statusMessage.setText(R.string.bookmark_empty);
112+
binding.statusMessage.setVisibility(View.VISIBLE);
116113
} else {
117-
statusTextView.setVisibility(View.GONE);
114+
binding.statusMessage.setVisibility(View.GONE);
118115
}
119116
}
120117

121118
@Override
122119
public void onActivityResult(int requestCode, int resultCode, Intent data) {
123120
contributionController.handleActivityResult(getActivity(), requestCode, resultCode, data);
124121
}
122+
123+
@Override
124+
public void onDestroy() {
125+
super.onDestroy();
126+
binding = null;
127+
}
125128
}

0 commit comments

Comments
 (0)