/** * Called to return the stable ID for the item, and passes the event to its associated binder. * * @param position Adapter position to query * @return the stable ID of the item at position * @see ItemViewBinder#getItemId(Object) * @see RecyclerView.Adapter#setHasStableIds(boolean) * @since v3.2.0 */ @Override @SuppressWarnings("unchecked") public final long getItemId(int position) { Object item = items.get(position); int itemViewType = getItemViewType(position); ItemViewBinder binder = typePool.getItemViewBinder(itemViewType); return binder.getItemId(item); }
@Test @SuppressWarnings("deprecation") public void testOnBindViewHolder() { MultiTypeAdapter adapter = new MultiTypeAdapter(); adapter.register(TestItem.class, mockedItemViewBinder); TestItem item = new TestItem("testOnCreateViewHolder"); adapter.setItems(Collections.singletonList(item)); TestItemViewBinder.ViewHolder holder = mock(TestItemViewBinder.ViewHolder.class); when(holder.getItemViewType()).thenReturn(adapter.getItemViewType(0)); adapter.onBindViewHolder(holder, 0); verify(mockedItemViewBinder).onBindViewHolder(eq(holder), eq(item), anyList()); List<Object> payloads = Collections.emptyList(); adapter.onBindViewHolder(holder, 0, payloads); verify(mockedItemViewBinder, times(2)).onBindViewHolder(holder, item, payloads); } }
@Test public void testOnCreateViewHolder() { MultiTypeAdapter adapter = new MultiTypeAdapter(); adapter.register(TestItem.class, mockedItemViewBinder); TestItem item = new TestItem("testOnCreateViewHolder"); adapter.setItems(Collections.singletonList(item)); int type = adapter.getItemViewType(0); adapter.onCreateViewHolder(parent, type); verify(mockedItemViewBinder).onCreateViewHolder(inflater, parent); }