android.support.v7.widget.RecyclerView.Adapter Java Examples

The following examples show how to use android.support.v7.widget.RecyclerView.Adapter. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: FocusableLinearLayoutManager.java    From ticdesign with Apache License 2.0 7 votes vote down vote up
@Override
public boolean validAdapter(Adapter adapter) {
    // TODO: find a better way to valid adapter instead of instance a ViewHolder.
    if (adapter != null && adapter.getItemCount() > 0) {
        RecyclerView.ViewHolder viewHolder = adapter.createViewHolder(mTicklableRecyclerView,
                adapter.getItemViewType(0));
        if (!(viewHolder instanceof ViewHolder)) {
            String msg = "adapter's ViewHolder should be instance of FocusableLinearLayoutManager.ViewHolder";
            if (DesignConfig.DEBUG) {
                throw new IllegalArgumentException(msg);
            } else {
                Log.w(TAG, msg);
                return false;
            }
        }
    }
    return true;
}
 
Example #2
Source File: ItemSelectionSupport.java    From UltimateAndroid with Apache License 2.0 6 votes vote down vote up
/**
 * Defines the choice behavior for the List. By default, Lists do not have any choice behavior
 * ({@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#NONE}). By setting the choiceMode to {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#SINGLE}, the
 * List allows up to one item to  be in a chosen state. By setting the choiceMode to
 * {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#MULTIPLE}, the list allows any number of items to be chosen.
 *
 * @param choiceMode One of {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#NONE}, {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#SINGLE}, or
 * {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#MULTIPLE}
 */
public void setChoiceMode(ChoiceMode choiceMode) {
    if (mChoiceMode == choiceMode) {
        return;
    }

    mChoiceMode = choiceMode;

    if (mChoiceMode != ChoiceMode.NONE) {
        if (mCheckedStates == null) {
            mCheckedStates = new CheckedStates();
        }

        final Adapter adapter = mRecyclerView.getAdapter();
        if (mCheckedIdStates == null && adapter != null && adapter.hasStableIds()) {
            mCheckedIdStates = new CheckedIdStates();
        }
    }
}
 
Example #3
Source File: SelectableListLayout.java    From 365browser with Apache License 2.0 6 votes vote down vote up
/**
 * Initializes the RecyclerView.
 *
 * @param adapter The adapter that provides a binding from an app-specific data set to views
 *                that are displayed within the RecyclerView.
 * @return The RecyclerView itself.
 */
public RecyclerView initializeRecyclerView(Adapter<RecyclerView.ViewHolder> adapter) {
    mAdapter = adapter;
    mAdapter.registerAdapterDataObserver(mAdapterObserver);

    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    mRecyclerView.setAdapter(mAdapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.addOnScrollListener(new OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            setToolbarShadowVisibility();
        }
    });

    mItemAnimator = mRecyclerView.getItemAnimator();

    return mRecyclerView;
}
 
Example #4
Source File: ItemSelectionSupport.java    From MultiView with Apache License 2.0 6 votes vote down vote up
/**
 * Defines the choice behavior for the List. By default, Lists do not have any choice behavior
 * ({@link ChoiceMode#NONE}). By setting the choiceMode to {@link ChoiceMode#SINGLE}, the
 * List allows up to one item to  be in a chosen state. By setting the choiceMode to
 * {@link ChoiceMode#MULTIPLE}, the list allows any number of items to be chosen.
 *
 * @param choiceMode One of {@link ChoiceMode#NONE}, {@link ChoiceMode#SINGLE}, or
 *                   {@link ChoiceMode#MULTIPLE}
 */
public void setChoiceMode(ChoiceMode choiceMode) {
    if (mChoiceMode == choiceMode) {
        return;
    }

    mChoiceMode = choiceMode;

    if (mChoiceMode != ChoiceMode.NONE) {
        if (mCheckedStates == null) {
            mCheckedStates = new CheckedStates();
        }

        final Adapter adapter = mRecyclerView.getAdapter();
        if (mCheckedIdStates == null && adapter != null && adapter.hasStableIds()) {
            mCheckedIdStates = new CheckedIdStates();
        }
    }
}
 
Example #5
Source File: SelectableListLayout.java    From AndroidChromium with Apache License 2.0 5 votes vote down vote up
/**
 * Initializes the RecyclerView.
 *
 * @param adapter The adapter that provides a binding from an app-specific data set to views
 *                that are displayed within the RecyclerView.
 */
public void initializeRecyclerView(Adapter<RecyclerView.ViewHolder> adapter) {
    mAdapter = adapter;
    mAdapter.registerAdapterDataObserver(mAdapterObserver);

    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    mRecyclerView.setAdapter(mAdapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
}
 
Example #6
Source File: TwoWayLayoutManager.java    From UltimateAndroid with Apache License 2.0 5 votes vote down vote up
@Override
public void onAdapterChanged(Adapter oldAdapter, Adapter newAdapter) {
    super.onAdapterChanged(oldAdapter, newAdapter);

    final ItemSelectionSupport itemSelectionSupport = ItemSelectionSupport.from(mRecyclerView);
    if (oldAdapter != null && itemSelectionSupport != null) {
        itemSelectionSupport.clearChoices();
    }
}
 
Example #7
Source File: RepositoryAdapter.java    From agera with Apache License 2.0 5 votes vote down vote up
/**
 * Builds the {@link RepositoryAdapter} that presents the provided repositories in order and
 * observes the repositories as well as any additional observables while the provided
 * {@link Activity} is started (between (between {@link Activity#onStart()} and
 * {@link Activity#onStop()}).
 * <p>
 * Note: Can only be called from {@link Activity#onCreate} ()}
 */
@TargetApi(14)
@NonNull
public Adapter<ViewHolder> whileStarted(@NonNull final Activity activity) {
  final RepositoryAdapter repositoryAdapter = new RepositoryAdapter(this);
  activity.getApplication().registerActivityLifecycleCallbacks(
      new WhileStartedActivityLifecycleCallbacks(activity, repositoryAdapter));
  return repositoryAdapter;
}
 
Example #8
Source File: RepositoryAdapter.java    From agera with Apache License 2.0 5 votes vote down vote up
/**
 * Builds the {@link RepositoryAdapter} that presents the provided repositories in order and
 * observes the repositories as well as any additional observables while the provided
 * {@link Activity} is resumed (between {@link Activity#onResume()} and
 * {@link Activity#onPause()}).
 * <p>
 * Note: Can only be called from {@link Activity#onCreate} ()}
 */
@TargetApi(14)
@NonNull
public Adapter<ViewHolder> whileResumed(@NonNull final Activity activity) {
  final RepositoryAdapter repositoryAdapter = new RepositoryAdapter(this);
  activity.getApplication().registerActivityLifecycleCallbacks(
      new WhileResumedActivityLifecycleCallbacks(activity, repositoryAdapter));
  return repositoryAdapter;
}
 
Example #9
Source File: ItemSelectionSupport.java    From MultiView with Apache License 2.0 4 votes vote down vote up
public void onAdapterDataChanged() {
    final Adapter adapter = mRecyclerView.getAdapter();
    if (mChoiceMode == ChoiceMode.NONE || adapter == null || !adapter.hasStableIds()) {
        return;
    }

    final int itemCount = adapter.getItemCount();

    // Clear out the positional check states, we'll rebuild it below from IDs.
    mCheckedStates.clear();

    for (int checkedIndex = 0; checkedIndex < mCheckedIdStates.size(); checkedIndex++) {
        final long currentId = mCheckedIdStates.keyAt(checkedIndex);
        final int currentPosition = mCheckedIdStates.valueAt(checkedIndex);

        final long newPositionId = adapter.getItemId(currentPosition);
        if (currentId != newPositionId) {
            // Look around to see if the ID is nearby. If not, uncheck it.
            final int start = Math.max(0, currentPosition - CHECK_POSITION_SEARCH_DISTANCE);
            final int end = Math.min(currentPosition + CHECK_POSITION_SEARCH_DISTANCE, itemCount);

            boolean found = false;
            for (int searchPos = start; searchPos < end; searchPos++) {
                final long searchId = adapter.getItemId(searchPos);
                if (currentId == searchId) {
                    found = true;
                    mCheckedStates.put(searchPos, true);
                    mCheckedIdStates.setValueAt(checkedIndex, searchPos);
                    break;
                }
            }

            if (!found) {
                mCheckedIdStates.delete(currentId);
                mCheckedCount--;
                checkedIndex--;
            }
        } else {
            mCheckedStates.put(currentPosition, true);
        }
    }
}
 
Example #10
Source File: ItemSelectionSupport.java    From MultiView with Apache License 2.0 4 votes vote down vote up
/**
 * Sets the checked state of the specified position. The is only valid if
 * the choice mode has been set to {@link ChoiceMode#SINGLE} or
 * {@link ChoiceMode#MULTIPLE}.
 *
 * @param position The item whose checked state is to be checked
 * @param checked  The new checked state for the item
 */
public void setItemChecked(int position, boolean checked) {
    if (mChoiceMode == ChoiceMode.NONE) {
        return;
    }

    final Adapter adapter = mRecyclerView.getAdapter();

    if (mChoiceMode == ChoiceMode.MULTIPLE) {
        boolean oldValue = mCheckedStates.get(position);
        mCheckedStates.put(position, checked);

        if (mCheckedIdStates != null && adapter.hasStableIds()) {
            if (checked) {
                mCheckedIdStates.put(adapter.getItemId(position), position);
            } else {
                mCheckedIdStates.delete(adapter.getItemId(position));
            }
        }

        if (oldValue != checked) {
            if (checked) {
                mCheckedCount++;
            } else {
                mCheckedCount--;
            }
        }
    } else {
        boolean updateIds = mCheckedIdStates != null && adapter.hasStableIds();

        // Clear all values if we're checking something, or unchecking the currently
        // selected item
        if (checked || isItemChecked(position)) {
            mCheckedStates.clear();

            if (updateIds) {
                mCheckedIdStates.clear();
            }
        }

        // This may end up selecting the checked we just cleared but this way
        // we ensure length of mCheckStates is 1, a fact getCheckedItemPosition relies on
        if (checked) {
            mCheckedStates.put(position, true);

            if (updateIds) {
                mCheckedIdStates.put(adapter.getItemId(position), position);
            }

            mCheckedCount = 1;
        } else if (mCheckedStates.size() == 0 || !mCheckedStates.valueAt(0)) {
            mCheckedCount = 0;
        }
    }

    updateOnScreenCheckedViews();
}
 
Example #11
Source File: AdvancedRecyclerAdapter.java    From Android-Next with Apache License 2.0 4 votes vote down vote up
public AdvancedRecyclerAdapter(final RecyclerView.Adapter<?> adapter) {
    mWrapped = adapter;
    mWrapped.registerAdapterDataObserver(mAdapterDataObserver);
}
 
Example #12
Source File: AdvancedRecyclerAdapter.java    From Android-Next with Apache License 2.0 4 votes vote down vote up
public Adapter getWrapped() {
    return mWrapped;
}
 
Example #13
Source File: TwoWayLayoutManager.java    From UltimateAndroid with Apache License 2.0 4 votes vote down vote up
protected Adapter getAdapter() {
    return (mRecyclerView != null ? mRecyclerView.getAdapter() : null);
}
 
Example #14
Source File: ItemSelectionSupport.java    From UltimateAndroid with Apache License 2.0 4 votes vote down vote up
/**
 * Sets the checked state of the specified position. The is only valid if
 * the choice mode has been set to {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#SINGLE} or
 * {@link com.marshalchen.common.uimodule.twowayview.ItemSelectionSupport.ChoiceMode#MULTIPLE}.
 *
 * @param position The item whose checked state is to be checked
 * @param checked The new checked state for the item
 */
public void setItemChecked(int position, boolean checked) {
    if (mChoiceMode == ChoiceMode.NONE) {
        return;
    }

    final Adapter adapter = mRecyclerView.getAdapter();

    if (mChoiceMode == ChoiceMode.MULTIPLE) {
        boolean oldValue = mCheckedStates.get(position);
        mCheckedStates.put(position, checked);

        if (mCheckedIdStates != null && adapter.hasStableIds()) {
            if (checked) {
                mCheckedIdStates.put(adapter.getItemId(position), position);
            } else {
                mCheckedIdStates.delete(adapter.getItemId(position));
            }
        }

        if (oldValue != checked) {
            if (checked) {
                mCheckedCount++;
            } else {
                mCheckedCount--;
            }
        }
    } else {
        boolean updateIds = mCheckedIdStates != null && adapter.hasStableIds();

        // Clear all values if we're checking something, or unchecking the currently
        // selected item
        if (checked || isItemChecked(position)) {
            mCheckedStates.clear();

            if (updateIds) {
                mCheckedIdStates.clear();
            }
        }

        // This may end up selecting the checked we just cleared but this way
        // we ensure length of mCheckStates is 1, a fact getCheckedItemPosition relies on
        if (checked) {
            mCheckedStates.put(position, true);

            if (updateIds) {
                mCheckedIdStates.put(adapter.getItemId(position), position);
            }

            mCheckedCount = 1;
        } else if (mCheckedStates.size() == 0 || !mCheckedStates.valueAt(0)) {
            mCheckedCount = 0;
        }
    }

    updateOnScreenCheckedViews();
}
 
Example #15
Source File: SortedListAdapterCallback.java    From letv with Apache License 2.0 4 votes vote down vote up
public SortedListAdapterCallback(Adapter adapter) {
    this.mAdapter = adapter;
}
 
Example #16
Source File: ItemSelectionSupport.java    From UltimateAndroid with Apache License 2.0 4 votes vote down vote up
public void onAdapterDataChanged() {
    final Adapter adapter = mRecyclerView.getAdapter();
    if (mChoiceMode == ChoiceMode.NONE || adapter == null || !adapter.hasStableIds()) {
        return;
    }

    final int itemCount = adapter.getItemCount();

    // Clear out the positional check states, we'll rebuild it below from IDs.
    mCheckedStates.clear();

    for (int checkedIndex = 0; checkedIndex < mCheckedIdStates.size(); checkedIndex++) {
        final long currentId = mCheckedIdStates.keyAt(checkedIndex);
        final int currentPosition = mCheckedIdStates.valueAt(checkedIndex);

        final long newPositionId = adapter.getItemId(currentPosition);
        if (currentId != newPositionId) {
            // Look around to see if the ID is nearby. If not, uncheck it.
            final int start = Math.max(0, currentPosition - CHECK_POSITION_SEARCH_DISTANCE);
            final int end = Math.min(currentPosition + CHECK_POSITION_SEARCH_DISTANCE, itemCount);

            boolean found = false;
            for (int searchPos = start; searchPos < end; searchPos++) {
                final long searchId = adapter.getItemId(searchPos);
                if (currentId == searchId) {
                    found = true;
                    mCheckedStates.put(searchPos, true);
                    mCheckedIdStates.setValueAt(checkedIndex, searchPos);
                    break;
                }
            }

            if (!found) {
                mCheckedIdStates.delete(currentId);
                mCheckedCount--;
                checkedIndex--;
            }
        } else {
            mCheckedStates.put(currentPosition, true);
        }
    }
}
 
Example #17
Source File: RecyclerViewListObserverListener.java    From UniversalAdapter with Apache License 2.0 2 votes vote down vote up
/**
 * Constructs a new listener which will delegate its calls back to the
 * given adapter.
 *
 * @param adapter The adapter to send calls back to.
 */
public RecyclerViewListObserverListener(RecyclerView.Adapter<?> adapter) {
    this.adapter = adapter;
}
 
Example #18
Source File: TicklableLayoutManager.java    From ticdesign with Apache License 2.0 2 votes vote down vote up
/**
 * Check if the adapter is valid for this layout manager.
 */
boolean validAdapter(Adapter adapter);