Skip to content

Commit 2076bf9

Browse files
Migrated Explore Package From Butterknife to ViewBinding (commons-app#5592)
* Butterknife to ViewBinding * code cleanup and tests migrated to binding * tests fixed * adjustments and code cleanup
1 parent 7b63185 commit 2076bf9

15 files changed

+246
-355
lines changed

app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
import androidx.annotation.Nullable;
1212
import androidx.fragment.app.Fragment;
1313
import androidx.viewpager.widget.ViewPager.OnPageChangeListener;
14-
import butterknife.BindView;
15-
import butterknife.ButterKnife;
1614
import com.google.android.material.tabs.TabLayout;
1715
import fr.free.nrw.commons.R;
1816
import fr.free.nrw.commons.ViewPagerAdapter;
1917
import fr.free.nrw.commons.contributions.MainActivity;
18+
import fr.free.nrw.commons.databinding.FragmentExploreBinding;
2019
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
2120
import fr.free.nrw.commons.kvstore.JsonKvStore;
2221
import fr.free.nrw.commons.theme.BaseActivity;
@@ -33,10 +32,8 @@ public class ExploreFragment extends CommonsDaggerSupportFragment {
3332
private static final String EXPLORE_MAP = "Map";
3433
private static final String MEDIA_DETAILS_FRAGMENT_TAG = "MediaDetailsFragment";
3534

36-
@BindView(R.id.tab_layout)
37-
TabLayout tabLayout;
38-
@BindView(R.id.viewPager)
39-
ParentViewPager viewPager;
35+
36+
public FragmentExploreBinding binding;
4037
ViewPagerAdapter viewPagerAdapter;
4138
private ExploreListRootFragment featuredRootFragment;
4239
private ExploreListRootFragment mobileRootFragment;
@@ -46,7 +43,10 @@ public class ExploreFragment extends CommonsDaggerSupportFragment {
4643
public JsonKvStore applicationKvStore;
4744

4845
public void setScroll(boolean canScroll){
49-
viewPager.setCanScroll(canScroll);
46+
if (binding != null)
47+
{
48+
binding.viewPager.setCanScroll(canScroll);
49+
}
5050
}
5151

5252
@NonNull
@@ -56,22 +56,17 @@ public static ExploreFragment newInstance() {
5656
return fragment;
5757
}
5858

59-
@Override
60-
public void onCreate(@Nullable final Bundle savedInstanceState) {
61-
super.onCreate(savedInstanceState);
62-
}
63-
6459
@Override
6560
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
6661
@Nullable Bundle savedInstanceState) {
6762
super.onCreate(savedInstanceState);
68-
View view = inflater.inflate(R.layout.fragment_explore, container, false);
69-
ButterKnife.bind(this, view);
63+
binding = FragmentExploreBinding.inflate(inflater, container, false);
64+
7065
viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
71-
viewPager.setAdapter(viewPagerAdapter);
72-
viewPager.setId(R.id.viewPager);
73-
tabLayout.setupWithViewPager(viewPager);
74-
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
66+
binding.viewPager.setAdapter(viewPagerAdapter);
67+
binding.viewPager.setId(R.id.viewPager);
68+
binding.tabLayout.setupWithViewPager(binding.viewPager);
69+
binding.viewPager.addOnPageChangeListener(new OnPageChangeListener() {
7570
@Override
7671
public void onPageScrolled(int position, float positionOffset,
7772
int positionOffsetPixels) {
@@ -81,9 +76,9 @@ public void onPageScrolled(int position, float positionOffset,
8176
@Override
8277
public void onPageSelected(int position) {
8378
if (position == 2) {
84-
viewPager.setCanScroll(false);
79+
binding.viewPager.setCanScroll(false);
8580
} else {
86-
viewPager.setCanScroll(true);
81+
binding.viewPager.setCanScroll(true);
8782
}
8883
}
8984

@@ -94,7 +89,7 @@ public void onPageScrollStateChanged(int state) {
9489
});
9590
setTabs();
9691
setHasOptionsMenu(true);
97-
return view;
92+
return binding.getRoot();
9893
}
9994

10095
/**
@@ -133,13 +128,13 @@ public void setTabs() {
133128
}
134129

135130
public boolean onBackPressed() {
136-
if (tabLayout.getSelectedTabPosition() == 0) {
131+
if (binding.tabLayout.getSelectedTabPosition() == 0) {
137132
if (featuredRootFragment.backPressed()) {
138133
((BaseActivity) getActivity()).getSupportActionBar()
139134
.setDisplayHomeAsUpEnabled(false);
140135
return true;
141136
}
142-
} else if (tabLayout.getSelectedTabPosition() == 1) { //Mobile root fragment
137+
} else if (binding.tabLayout.getSelectedTabPosition() == 1) { //Mobile root fragment
143138
if (mobileRootFragment.backPressed()) {
144139
((BaseActivity) getActivity()).getSupportActionBar()
145140
.setDisplayHomeAsUpEnabled(false);
@@ -180,6 +175,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
180175
return super.onOptionsItemSelected(item);
181176
}
182177
}
178+
179+
@Override
180+
public void onDestroy() {
181+
super.onDestroy();
182+
binding = null;
183+
}
183184
}
184185

185186

app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@
99
import androidx.annotation.NonNull;
1010
import androidx.annotation.Nullable;
1111
import androidx.fragment.app.Fragment;
12-
import butterknife.BindView;
13-
import butterknife.ButterKnife;
1412
import fr.free.nrw.commons.Media;
1513
import fr.free.nrw.commons.R;
1614
import fr.free.nrw.commons.category.CategoryImagesCallback;
1715
import fr.free.nrw.commons.contributions.MainActivity;
16+
import fr.free.nrw.commons.databinding.FragmentFeaturedRootBinding;
1817
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
1918
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment;
2019
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
@@ -26,8 +25,7 @@ public class ExploreListRootFragment extends CommonsDaggerSupportFragment implem
2625
private MediaDetailPagerFragment mediaDetails;
2726
private CategoriesMediaFragment listFragment;
2827

29-
@BindView(R.id.explore_container)
30-
FrameLayout container;
28+
private FragmentFeaturedRootBinding binding;
3129

3230
public ExploreListRootFragment() {
3331
//empty constructor necessary otherwise crashes on recreate
@@ -47,9 +45,9 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
4745
@Nullable final ViewGroup container,
4846
@Nullable final Bundle savedInstanceState) {
4947
super.onCreate(savedInstanceState);
50-
View view = inflater.inflate(R.layout.fragment_featured_root, container, false);
51-
ButterKnife.bind(this, view);
52-
return view;
48+
49+
binding = FragmentFeaturedRootBinding.inflate(inflater, container, false);
50+
return binding.getRoot();
5351
}
5452

5553
@Override
@@ -109,8 +107,12 @@ public void onAttach(final Context context) {
109107

110108
@Override
111109
public void onMediaClicked(int position) {
112-
container.setVisibility(View.VISIBLE);
113-
((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.GONE);
110+
if (binding!=null) {
111+
binding.exploreContainer.setVisibility(View.VISIBLE);
112+
}
113+
if (((ExploreFragment) getParentFragment()).binding!=null) {
114+
((ExploreFragment) getParentFragment()).binding.tabLayout.setVisibility(View.GONE);
115+
}
114116
mediaDetails = MediaDetailPagerFragment.newInstance(false, true);
115117
((ExploreFragment) getParentFragment()).setScroll(false);
116118
setFragment(mediaDetails, listFragment);
@@ -185,16 +187,29 @@ public void viewPagerNotifyDataSetChanged() {
185187
*/
186188
public boolean backPressed() {
187189
if (null != mediaDetails && mediaDetails.isVisible()) {
188-
((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.VISIBLE);
190+
if (((ExploreFragment) getParentFragment()).binding != null) {
191+
((ExploreFragment) getParentFragment()).binding.tabLayout.setVisibility(View.VISIBLE);
192+
}
189193
removeFragment(mediaDetails);
190194
((ExploreFragment) getParentFragment()).setScroll(true);
191195
setFragment(listFragment, mediaDetails);
192196
((MainActivity) getActivity()).showTabs();
193197
return true;
194198
} else {
195-
((MainActivity) getActivity()).setSelectedItemId(NavTab.CONTRIBUTIONS.code());
199+
if (((MainActivity) getActivity()) != null) {
200+
((MainActivity) getActivity()).setSelectedItemId(NavTab.CONTRIBUTIONS.code());
201+
}
202+
}
203+
if (((MainActivity) getActivity()) != null) {
204+
((MainActivity) getActivity()).showTabs();
196205
}
197-
((MainActivity) getActivity()).showTabs();
198206
return false;
199207
}
208+
209+
@Override
210+
public void onDestroy() {
211+
super.onDestroy();
212+
213+
binding = null;
214+
}
200215
}

app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@
99
import androidx.annotation.NonNull;
1010
import androidx.annotation.Nullable;
1111
import androidx.fragment.app.Fragment;
12-
import butterknife.BindView;
13-
import butterknife.ButterKnife;
1412
import fr.free.nrw.commons.Media;
1513
import fr.free.nrw.commons.R;
1614
import fr.free.nrw.commons.category.CategoryImagesCallback;
1715
import fr.free.nrw.commons.contributions.MainActivity;
16+
import fr.free.nrw.commons.databinding.FragmentFeaturedRootBinding;
1817
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
1918
import fr.free.nrw.commons.explore.map.ExploreMapFragment;
2019
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
@@ -26,8 +25,7 @@ public class ExploreMapRootFragment extends CommonsDaggerSupportFragment impleme
2625
private MediaDetailPagerFragment mediaDetails;
2726
private ExploreMapFragment mapFragment;
2827

29-
@BindView(R.id.explore_container)
30-
FrameLayout container;
28+
private FragmentFeaturedRootBinding binding;
3129

3230
public ExploreMapRootFragment() {
3331
//empty constructor necessary otherwise crashes on recreate
@@ -54,9 +52,10 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
5452
@Nullable final ViewGroup container,
5553
@Nullable final Bundle savedInstanceState) {
5654
super.onCreate(savedInstanceState);
57-
View view = inflater.inflate(R.layout.fragment_featured_root, container, false);
58-
ButterKnife.bind(this, view);
59-
return view;
55+
56+
binding = FragmentFeaturedRootBinding.inflate(inflater, container, false);
57+
58+
return binding.getRoot();
6059
}
6160

6261
@Override
@@ -116,8 +115,8 @@ public void onAttach(final Context context) {
116115

117116
@Override
118117
public void onMediaClicked(int position) {
119-
container.setVisibility(View.VISIBLE);
120-
((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.GONE);
118+
binding.exploreContainer.setVisibility(View.VISIBLE);
119+
((ExploreFragment) getParentFragment()).binding.tabLayout.setVisibility(View.GONE);
121120
mediaDetails = MediaDetailPagerFragment.newInstance(false, true);
122121
((ExploreFragment) getParentFragment()).setScroll(false);
123122
setFragment(mediaDetails, mapFragment);
@@ -192,7 +191,7 @@ public void viewPagerNotifyDataSetChanged() {
192191
*/
193192
public boolean backPressed() {
194193
if (null != mediaDetails && mediaDetails.isVisible()) {
195-
((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.VISIBLE);
194+
((ExploreFragment) getParentFragment()).binding.tabLayout.setVisibility(View.VISIBLE);
196195
removeFragment(mediaDetails);
197196
((ExploreFragment) getParentFragment()).setScroll(true);
198197
setFragment(mapFragment, mediaDetails);
@@ -213,4 +212,11 @@ public boolean backPressed() {
213212
((MainActivity) getActivity()).showTabs();
214213
return false;
215214
}
215+
216+
@Override
217+
public void onDestroy() {
218+
super.onDestroy();
219+
220+
binding = null;
221+
}
216222
}

0 commit comments

Comments
 (0)