Aspsine / IRecyclerView

IRecyclerView is a custom RecyclerView that supports pull-to-refresh, pull-to-loadmore, customize refresh header and loadmore footer, add header views and footer views.
729 stars 146 forks source link

调用notifyItemRemoved(position)和notifyItemRangeChanged(position, memoList.size())后position仍然不正确 #18

Closed LiuZaiJun closed 8 years ago

LiuZaiJun commented 8 years ago

WrapperAdapter中的getItemViewType方法抛出异常 throw new IllegalArgumentException("Wrong type! Position = " + position) 这个该怎么解决

Aspsine commented 8 years ago
ImageAdapter mAdapter = new ImageAdapter();
iRecyclerView.setIAdapter(mAdapter);
mAdapter.notify...
// or you need get your adapter from iRecyclerview
mAdapter = iRecyclerView.getIAdapter();
mAdapter.notify...

调用者一般来说不用关心WrapperAdapter, 只需要调用自定义的adapter的notify系列方法。 如果你需要recyclerview.getAdapter()(这里获取到的是WrapperAdapter)获取到adapter, 请使用recyclerview.getIAdapter()获取到获取你自己定义的adapter,然后再调用notify系列方法。

LiuZaiJun commented 8 years ago

非常感谢,使用getIAdapter再去notify系列方法后,position是正确的,但是仍然出现了问题,剩余2个去remove的时候,出现java.lang.IllegalArgumentException: Wrong type! Position = 5 at com.aspsine.irecyclerview.WrapperAdapter.getItemViewType

Aspsine commented 8 years ago

已修复,请升级:

compile 'com.github.Aspsine:IRecyclerView:0.0.4'