1. 程式人生 > >Android RecyclerView StaggeredGridLayoutManager瀑布流item位置變換問題解決

Android RecyclerView StaggeredGridLayoutManager瀑布流item位置變換問題解決

瀑布流 位置變換網上一搜一堆 全是一下這種方法,然而還是會有問題

manager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
//防止item 交換位置
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, 
newState); manager.invalidateSpanAssignments(); //防止第一行到頂部有空白區域 } });

其實可以不用寫這兩種方法,就可以解決了。

在請求到資料之後,我們一般是用

Adapter.notifyDataSetChanged();

但是瀑布流,這裡我們需要換一種方法就是

Adapter.notifyItemInserted(mPosition);

這個mPosition就是載入新資料的第一個position

這樣就可以完美解決item變換的問題了,完美。

其次就是要注意:

if (mHeights.size() <= position) {
    mHeights
.add((int) (height / ((float) width / (StringUtil.getWidths(context) / 2 - 30)))); } StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) holder.rlAll.getLayoutParams(); params.height = mHeights.get(position); holder.rlAll.setLayoutParams(params);

1.介面卡裡面的寬高需要用集合存起來,防止複用的時候重新計算高度出現問題

2.一定要先計算高度,然後載入圖片(切記)

還有其他問題歡迎探討!QQ 240272348