You can setRowViewSelected by subclassing ListRowPresenter and overriding initializeRowViewHolder(RowPresenter.ViewHolder holder)
@Override protected void initializeRowViewHolder(RowPresenter.ViewHolder holder) { super.initializeRowViewHolder(holder); setRowViewSelected(holder, false); }
But I do not think that you can deselect all elements in BrowseFragment using this approach.
Try setting the ItemViewSelectedListener after loading the data instead of setting it to onActivityCreated so that all items are not selected on first run.
A possible reason why the top left line item will always be selected by default, and you cannot have all the unselected items on first run:
BrowseFragment onItemSelected method ( line 1372-1382 ) on initial mMainFragmentRowsAdapter.getSelectedPosition() start calls
@Override public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) { int position = mMainFragmentRowsAdapter.getSelectedPosition();
where getSelectedPosition() always returns 0 ( line 483-485 )
public int getSelectedPosition() { return 0; }
It also calls mExternalOnItemViewSelectedListener.onItemSelected , where mExternalOnItemViewSelectedListener is the ItemViewSelectedListener set to your application's MainFragment .
Thus, the first time the 0th element in the 0th row is selected as the default selected element, but if you delay the mExternalOnItemViewSelectedListener setting, this call will not reach your selected listener for the first time.
source share