From d3057979d1b657332897f7540a1a170b08c7e800 Mon Sep 17 00:00:00 2001 From: Ashish Date: Fri, 4 May 2018 16:04:14 +0530 Subject: [PATCH 1/2] Implemented butterknife in MediaDetailFragment [issue #1491] --- .../commons/media/MediaDetailFragment.java | 96 ++++++++++++------- 1 file changed, 59 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index e078a3d0e..29667c026 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -14,6 +14,9 @@ import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -48,24 +51,35 @@ public class MediaDetailFragment extends Fragment { return mf; } - private MediaWikiImageView image; - private MediaDetailSpacer spacer; private int initialListTop = 0; - private TextView title; - private TextView desc; - private TextView license; - private TextView coordinates; - private TextView uploadedDate; - private LinearLayout categoryContainer; - private ScrollView scrollView; + //Changed the access specifiers of these view as well [ButterKnife wont let us bind private variables] + @BindView(R.id.mediaDetailImage) + MediaWikiImageView image; + @BindView(R.id.mediaDetailSpacer) + MediaDetailSpacer spacer; + @BindView(R.id.mediaDetailTitle) + TextView title; + @BindView(R.id.mediaDetailDesc) + TextView desc; + @BindView(R.id.mediaDetailLicense) + TextView license; + @BindView(R.id.mediaDetailCoordinates) + TextView coordinates; + @BindView(R.id.mediaDetailuploadeddate) + TextView uploadedDate; + @BindView(R.id.mediaDetailCategoryContainer) + LinearLayout categoryContainer; + @BindView(R.id.mediaDetailScrollView) + ScrollView scrollView; + private ArrayList categoryNames; private boolean categoriesLoaded = false; private boolean categoriesPresent = false; private ViewTreeObserver.OnGlobalLayoutListener layoutListener; // for layout stuff, only used once! private ViewTreeObserver.OnScrollChangedListener scrollListener; DataSetObserver dataObserver; - private AsyncTask detailFetchTask; + private AsyncTask detailFetchTask; private LicenseList licenseList; @Override @@ -100,17 +114,7 @@ public class MediaDetailFragment extends Fragment { final View view = inflater.inflate(R.layout.fragment_media_detail, container, false); - image = (MediaWikiImageView) view.findViewById(R.id.mediaDetailImage); - scrollView = (ScrollView) view.findViewById(R.id.mediaDetailScrollView); - - // Detail consists of a list view with main pane in header view, plus category list. - spacer = (MediaDetailSpacer) view.findViewById(R.id.mediaDetailSpacer); - title = (TextView) view.findViewById(R.id.mediaDetailTitle); - desc = (TextView) view.findViewById(R.id.mediaDetailDesc); - license = (TextView) view.findViewById(R.id.mediaDetailLicense); - coordinates = (TextView) view.findViewById(R.id.mediaDetailCoordinates); - uploadedDate = (TextView) view.findViewById(R.id.mediaDetailuploadeddate); - categoryContainer = (LinearLayout) view.findViewById(R.id.mediaDetailCategoryContainer); + ButterKnife.bind(this, view); licenseList = new LicenseList(getActivity()); @@ -271,22 +275,10 @@ public class MediaDetailFragment extends Fragment { private View buildCatLabel(String cat) { final String catName = cat; - final View item = getLayoutInflater(null).inflate(R.layout.detail_category_item, null, false); - final TextView textView = (TextView)item.findViewById(R.id.mediaDetailCategoryItemText); - - textView.setText(cat); - if (categoriesLoaded && categoriesPresent) { - textView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - String selectedCategoryTitle = "Category:" + catName; - Intent viewIntent = new Intent(); - viewIntent.setAction(Intent.ACTION_VIEW); - viewIntent.setData(Utils.uriForWikiPage(selectedCategoryTitle)); - startActivity(viewIntent); - } - }); - } + final View item = getLayoutInflater(null) + .inflate(R.layout.detail_category_item, null, false); + CategoryItemViewHolder categoryItemViewHolder = new CategoryItemViewHolder(item); + categoryItemViewHolder.init(catName); return item; } @@ -343,4 +335,34 @@ public class MediaDetailFragment extends Fragment { private String prettyCoordinates(Media media) { return media.getCoordinates(); } + + /** + * Holds the individual category item views + */ + + public class CategoryItemViewHolder { + + @BindView(R.id.mediaDetailCategoryItemText) + TextView mediaDetailCategoryItemText; + + private String categoryTitle; + + public CategoryItemViewHolder(View item) { + ButterKnife.bind(this, item); + } + + public void init(String categoryName) { + this.categoryTitle = categoryName; + mediaDetailCategoryItemText.setText(categoryName); + } + + @OnClick(R.id.mediaDetailCategoryItemText) + public void onCategoryItemClicked() { + String selectedCategoryTitle = "Category:" + categoryTitle; + Intent viewIntent = new Intent(); + viewIntent.setAction(Intent.ACTION_VIEW); + viewIntent.setData(Utils.uriForWikiPage(selectedCategoryTitle)); + startActivity(viewIntent); + } + } } From f7ad2cbf8f28420958d83e4ec88266b44dbf54c2 Mon Sep 17 00:00:00 2001 From: Ashish Date: Fri, 4 May 2018 19:05:35 +0530 Subject: [PATCH 2/2] Implemented butterknife in MediaDetailPagerFragment [[issue #1491]] --- .../free/nrw/commons/media/MediaDetailPagerFragment.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index c7e06cefa..7f061eba2 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -27,6 +27,8 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import butterknife.BindView; +import butterknife.ButterKnife; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.EventLog; import fr.free.nrw.commons.Media; @@ -35,7 +37,8 @@ import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.contributions.ContributionsActivity; public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPageChangeListener { - private ViewPager pager; + @BindView(R.id.mediaDetailsPager) + ViewPager pager; private Boolean editable; private CommonsApplication app; @@ -86,7 +89,7 @@ public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPa @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_media_detail_pager, container, false); - pager = (ViewPager) view.findViewById(R.id.mediaDetailsPager); + ButterKnife.bind(this,view); pager.addOnPageChangeListener(this); final MediaDetailAdapter adapter = new MediaDetailAdapter(getChildFragmentManager());