Beispiel #1
0
 @Override
 public void onItemClicked(ItemAdapter itemAdapter, RssItem rssItem) {
   int positionToExpand = -1;
   int positionToContract = -1;
   if (itemAdapter.getExpandedItem() != null) {
     positionToContract = currentItems.indexOf(itemAdapter.getExpandedItem());
     View viewToContract = recyclerView.getLayoutManager().findViewByPosition(positionToContract);
     if (viewToContract == null) {
       positionToContract = -1;
     }
   }
   if (itemAdapter.getExpandedItem() != rssItem) {
     positionToExpand = currentItems.indexOf(rssItem);
     itemAdapter.setExpandedItem(rssItem);
   } else {
     itemAdapter.setExpandedItem(null);
   }
   if (positionToContract > -1) {
     itemAdapter.notifyItemChanged(positionToContract);
   }
   if (positionToExpand > -1) {
     itemAdapter.notifyItemChanged(positionToExpand);
     delegate.get().onItemExpanded(this, itemAdapter.getExpandedItem());
   } else {
     delegate.get().onItemContracted(this, rssItem);
     return;
   }
   View viewToExpand = recyclerView.getLayoutManager().findViewByPosition(positionToExpand);
   int lessToScroll = 0;
   if (positionToContract > -1 && positionToContract < positionToExpand) {
     lessToScroll = itemAdapter.getExpandedItemHeight() - itemAdapter.getCollapsedItemHeight();
   }
   recyclerView.smoothScrollBy(0, viewToExpand.getTop() - lessToScroll);
 }