Minor simplification to view binding for app details.
Instead of casting to more specific view holders, all to call the similarly named/behaved "bindModel()" method, push this to a base class.
This commit is contained in:
		
							parent
							
								
									5739706cdd
								
							
						
					
					
						commit
						68e0f16b7c
					
				@ -94,8 +94,8 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
    private App app;
 | 
					    private App app;
 | 
				
			||||||
    private final AppDetailsRecyclerViewAdapterCallbacks callbacks;
 | 
					    private final AppDetailsRecyclerViewAdapterCallbacks callbacks;
 | 
				
			||||||
    private RecyclerView recyclerView;
 | 
					    private RecyclerView recyclerView;
 | 
				
			||||||
    private ArrayList<Object> items;
 | 
					    private List<Object> items;
 | 
				
			||||||
    private ArrayList<Apk> versions;
 | 
					    private List<Apk> versions;
 | 
				
			||||||
    private boolean showVersions;
 | 
					    private boolean showVersions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private HeaderViewHolder headerView;
 | 
					    private HeaderViewHolder headerView;
 | 
				
			||||||
@ -244,21 +244,16 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
                headerView = header;
 | 
					                headerView = header;
 | 
				
			||||||
                header.bindModel();
 | 
					                header.bindModel();
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // These don't have any specific requirements, they all get their state from the outer class.
 | 
				
			||||||
            case VIEWTYPE_SCREENSHOTS:
 | 
					            case VIEWTYPE_SCREENSHOTS:
 | 
				
			||||||
                ((ScreenShotsViewHolder) holder).bindModel();
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            case VIEWTYPE_DONATE:
 | 
					            case VIEWTYPE_DONATE:
 | 
				
			||||||
                ((DonateViewHolder) holder).bindModel();
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            case VIEWTYPE_LINKS:
 | 
					            case VIEWTYPE_LINKS:
 | 
				
			||||||
                ((LinksViewHolder) holder).bindModel();
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            case VIEWTYPE_PERMISSIONS:
 | 
					            case VIEWTYPE_PERMISSIONS:
 | 
				
			||||||
                ((PermissionsViewHolder) holder).bindModel();
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            case VIEWTYPE_VERSIONS:
 | 
					            case VIEWTYPE_VERSIONS:
 | 
				
			||||||
                ((VersionsViewHolder) holder).bindModel();
 | 
					                ((AppDetailsViewHolder) holder).bindModel();
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case VIEWTYPE_VERSION:
 | 
					            case VIEWTYPE_VERSION:
 | 
				
			||||||
                final Apk apk = (Apk) items.get(position);
 | 
					                final Apk apk = (Apk) items.get(position);
 | 
				
			||||||
                ((VersionViewHolder) holder).bindModel(apk);
 | 
					                ((VersionViewHolder) holder).bindModel(apk);
 | 
				
			||||||
@ -562,7 +557,15 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
        super.onDetachedFromRecyclerView(recyclerView);
 | 
					        super.onDetachedFromRecyclerView(recyclerView);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private class ScreenShotsViewHolder extends RecyclerView.ViewHolder {
 | 
					    private abstract class AppDetailsViewHolder extends RecyclerView.ViewHolder {
 | 
				
			||||||
 | 
					        AppDetailsViewHolder(View itemView) {
 | 
				
			||||||
 | 
					            super(itemView);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public abstract void bindModel();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private class ScreenShotsViewHolder extends AppDetailsViewHolder {
 | 
				
			||||||
        final RecyclerView recyclerView;
 | 
					        final RecyclerView recyclerView;
 | 
				
			||||||
        LinearLayoutManagerSnapHelper snapHelper;
 | 
					        LinearLayoutManagerSnapHelper snapHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -571,6 +574,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
            recyclerView = (RecyclerView) view.findViewById(R.id.screenshots);
 | 
					            recyclerView = (RecyclerView) view.findViewById(R.id.screenshots);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
        public void bindModel() {
 | 
					        public void bindModel() {
 | 
				
			||||||
            LinearLayoutManager lm = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
 | 
					            LinearLayoutManager lm = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
 | 
				
			||||||
            recyclerView.setLayoutManager(lm);
 | 
					            recyclerView.setLayoutManager(lm);
 | 
				
			||||||
@ -586,7 +590,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private class DonateViewHolder extends RecyclerView.ViewHolder {
 | 
					    private class DonateViewHolder extends AppDetailsViewHolder {
 | 
				
			||||||
        final TextView donateHeading;
 | 
					        final TextView donateHeading;
 | 
				
			||||||
        final GridLayout donationOptionsLayout;
 | 
					        final GridLayout donationOptionsLayout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -596,6 +600,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
            donationOptionsLayout = (GridLayout) view.findViewById(R.id.donation_options);
 | 
					            donationOptionsLayout = (GridLayout) view.findViewById(R.id.donation_options);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
        public void bindModel() {
 | 
					        public void bindModel() {
 | 
				
			||||||
            if (TextUtils.isEmpty(app.authorName)) {
 | 
					            if (TextUtils.isEmpty(app.authorName)) {
 | 
				
			||||||
                donateHeading.setText(context.getString(R.string.app_details_donate_prompt_unknown_author, app.name));
 | 
					                donateHeading.setText(context.getString(R.string.app_details_donate_prompt_unknown_author, app.name));
 | 
				
			||||||
@ -640,7 +645,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private abstract class ExpandableLinearLayoutViewHolder extends RecyclerView.ViewHolder {
 | 
					    private abstract class ExpandableLinearLayoutViewHolder extends AppDetailsViewHolder {
 | 
				
			||||||
        final TextView headerView;
 | 
					        final TextView headerView;
 | 
				
			||||||
        final LinearLayout contentView;
 | 
					        final LinearLayout contentView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -667,6 +672,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
            super(view);
 | 
					            super(view);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
        public void bindModel() {
 | 
					        public void bindModel() {
 | 
				
			||||||
            itemView.setOnClickListener(new View.OnClickListener() {
 | 
					            itemView.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
                @Override
 | 
					                @Override
 | 
				
			||||||
@ -690,6 +696,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
            super(view);
 | 
					            super(view);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
        public void bindModel() {
 | 
					        public void bindModel() {
 | 
				
			||||||
            itemView.setOnClickListener(new View.OnClickListener() {
 | 
					            itemView.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
                @Override
 | 
					                @Override
 | 
				
			||||||
@ -721,6 +728,7 @@ public class AppDetailsRecyclerViewAdapter
 | 
				
			|||||||
            super(view);
 | 
					            super(view);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
        public void bindModel() {
 | 
					        public void bindModel() {
 | 
				
			||||||
            itemView.setOnClickListener(new View.OnClickListener() {
 | 
					            itemView.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
                @Override
 | 
					                @Override
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user