Remove static mapping arrays
@pserwylo Not sure if you like this change. I think it's slightly more elegant, but don't have a strong opinion.
This commit is contained in:
		
							parent
							
								
									89fa83c8c7
								
							
						
					
					
						commit
						48b21626e4
					
				@ -46,7 +46,7 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
 | 
					    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
 | 
				
			||||||
        pager.scrollToPosition(MainViewAdapter.ID_TO_POSITION.get(item.getItemId()));
 | 
					        pager.scrollToPosition(((MainViewAdapter) pager.getAdapter()).adapterPositionFromItemId(item.getItemId()));
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -25,31 +25,18 @@ import org.fdroid.fdroid.R;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
class MainViewAdapter extends RecyclerView.Adapter<MainViewController> {
 | 
					class MainViewAdapter extends RecyclerView.Adapter<MainViewController> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Helpers for switching between the API of the RecyclerViewPager and the BottomNavigationView.
 | 
					    private final SparseIntArray positionToId = new SparseIntArray();
 | 
				
			||||||
    // One identifies items by position, the other by menu item ID, yet they need to be able
 | 
					 | 
				
			||||||
    // to talk to and control each other. If the user swipes the view pager, the bottom nav needs
 | 
					 | 
				
			||||||
    // to update, and vice-versa.
 | 
					 | 
				
			||||||
    static final SparseIntArray ID_TO_POSITION = new SparseIntArray();
 | 
					 | 
				
			||||||
    static final SparseIntArray POSITION_TO_ID = new SparseIntArray();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static {
 | 
					 | 
				
			||||||
        ID_TO_POSITION.put(R.id.whats_new, 0);
 | 
					 | 
				
			||||||
        ID_TO_POSITION.put(R.id.categories, 1);
 | 
					 | 
				
			||||||
        ID_TO_POSITION.put(R.id.nearby, 2);
 | 
					 | 
				
			||||||
        ID_TO_POSITION.put(R.id.my_apps, 3);
 | 
					 | 
				
			||||||
        ID_TO_POSITION.put(R.id.settings, 4);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        POSITION_TO_ID.put(0, R.id.whats_new);
 | 
					 | 
				
			||||||
        POSITION_TO_ID.put(1, R.id.categories);
 | 
					 | 
				
			||||||
        POSITION_TO_ID.put(2, R.id.nearby);
 | 
					 | 
				
			||||||
        POSITION_TO_ID.put(3, R.id.my_apps);
 | 
					 | 
				
			||||||
        POSITION_TO_ID.put(4, R.id.settings);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final AppCompatActivity activity;
 | 
					    private final AppCompatActivity activity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MainViewAdapter(AppCompatActivity activity) {
 | 
					    MainViewAdapter(AppCompatActivity activity) {
 | 
				
			||||||
        this.activity = activity;
 | 
					        this.activity = activity;
 | 
				
			||||||
 | 
					        setHasStableIds(true);
 | 
				
			||||||
 | 
					        positionToId.put(0, R.id.whats_new);
 | 
				
			||||||
 | 
					        positionToId.put(1, R.id.categories);
 | 
				
			||||||
 | 
					        positionToId.put(2, R.id.nearby);
 | 
				
			||||||
 | 
					        positionToId.put(3, R.id.my_apps);
 | 
				
			||||||
 | 
					        positionToId.put(4, R.id.settings);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -61,7 +48,7 @@ class MainViewAdapter extends RecyclerView.Adapter<MainViewController> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onBindViewHolder(MainViewController holder, int position) {
 | 
					    public void onBindViewHolder(MainViewController holder, int position) {
 | 
				
			||||||
        int menuId = POSITION_TO_ID.get(position);
 | 
					        long menuId = getItemId(position);
 | 
				
			||||||
        if (menuId == R.id.whats_new) {
 | 
					        if (menuId == R.id.whats_new) {
 | 
				
			||||||
            holder.bindWhatsNewView();
 | 
					            holder.bindWhatsNewView();
 | 
				
			||||||
        } else if (menuId == R.id.categories) {
 | 
					        } else if (menuId == R.id.categories) {
 | 
				
			||||||
@ -79,6 +66,16 @@ class MainViewAdapter extends RecyclerView.Adapter<MainViewController> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public int getItemCount() {
 | 
					    public int getItemCount() {
 | 
				
			||||||
        return 5;
 | 
					        return positionToId.size();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // The RecyclerViewPager and the BottomNavigationView both use menu item IDs to identify pages.
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public long getItemId(int position) {
 | 
				
			||||||
 | 
					        return positionToId.get(position);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int adapterPositionFromItemId(int itemId) {
 | 
				
			||||||
 | 
					        return positionToId.indexOfValue(itemId);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user