最近因為需要上下拉的刷新的功能,又不想重復造輪子,小編特意去找了個第三方的開源lib,
現在第三方上下拉刷新的開源lib是非常之多啊,我就不介紹了,反正小編情有獨鐘的看上了XRecyclerView ,
至于為什么,其實是朋友推薦的。。。。。
XRecyclerView 使用起來還是挺方便的,小編使用的過程,一路溜溜溜的,各種上下拉加載,
數據和布局顯示都正常 ,但有個需求就是要能刪除某一個item(還沒做點擊事件
),按道理說,原
RecyclerView 已經自帶增加刪除,只要按正常套路走(排除原RecyclerView 的移除后的錯亂問題),
是能正常實現增刪功能的,但是結果總是出乎人的意料,居然還是出問題了,我滴個天啊啊啊。。。
算了,還是直接上代碼吧
小編使用了 XRecyclerView 和 原 RecyclerView 進行比較 :
XRecyclerView 的設置
mAdapter = new TestAdapter(mContext,"XRecyclerView"); mLlManager = new LinearLayoutManager(mContext); mLlManager.setOrientation(LinearLayoutManager.VERTICAL); mXRcView.setLayoutManager(mLlManager); mXRcView.setAdapter(mAdapter);原 RecyclerView 的設置
mAdapter = new TestAdapter(mContext,"RecyclerView"); mLlManager = new LinearLayoutManager(mContext); mLlManager.setOrientation(LinearLayoutManager.VERTICAL); mRecycler.setLayoutManager(mLlManager); mRecycler.setAdapter(mAdapter);以上兩個屬性的設置都一樣的 , adapter 也是一樣的
看看adapter 的數據綁定方法里,就對三個位置屬性進行了打印,不做其他
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { Log.e("bug", mTag + " ----> Adapter " + holder.getAdapterPosition() + " Layout " + holder.getLayoutPosition() + " position " + position); }然后不應用跑起來,不做任何點擊和刪除操作,直接看控制臺打印
先看原 RecyclerView
E/bug: RecyclerView ----> Adapter 0 Layout 0 position 0E/bug: RecyclerView ----> Adapter 1 Layout 1 position 1E/bug: RecyclerView ----> Adapter 2 Layout 2 position 2E/bug: RecyclerView ----> Adapter 3 Layout 3 position 3 嗯,沒問題,位置都一樣接下來我們看XRecyclerView
E/bug: XRecyclerView ----> Adapter 1 Layout 1 position 0E/bug: XRecyclerView ----> Adapter 2 Layout 2 position 1E/bug: XRecyclerView ----> Adapter 3 Layout 3 position 2E/bug: XRecyclerView ----> Adapter 4 Layout 4 position 3 心累啊,怪不得一直掛,這鍋誰背?
知道原因,解決就好辦了,在原RecyclerView 錯亂問題的基礎上,對使用holder.getAdapterPosition() 、holder.getLayoutPosition() 、position進行一定的加減一操作就可以了這是不是 XRecyclerView 的bug?還是說我遇到了一個假的XRecyclerView
新聞熱點
疑難解答