我有一個RecyclerView
其中項目是LinearLayout
與幾個TextViews
作爲孩子。根據一些規則(這在onBindViewHolder
中決定),TextViews
可能被隱藏(可見性GONE)或顯示。RecyclerView隱藏/顯示他們的孩子的項目
我的問題是,如果我有例如在RecyclerView
中有3個項目(A,B和C),其中TextViews
的可見數目相同,A位於列表的頂部,B在中間,C在底部,如果例如B必須顯示比以前更多的TextViews
,則在短時間內該項目(B)將與C重疊,因爲它已經增大並且必須容納先前可見度爲GONE的新的可見的TextViews
。
可視化表示:
理想狀況
當前的和不需要的情況
RecyclerView
有點容易正確地容納物品。
我該如何避免發生這種情況?
編輯:
在評論的一個建議,我可能有動畫和轉換的觀點我自己。這是必要的還是有另一種方式呢?如果是這樣,我該如何動畫和轉換觀點?
編輯2:
試過這樣的回答:Animating items,但問題仍然存在。有一個可見的延遲,直到RecyclerView
更新。
EDIT 3:
我使用這個類(RecyclerViewCursorAdapter)作爲鹼爲填充RecyclerView
適配器。的方法,另外,我在onResume
@Override
public void onResume()
{
super.onResume();
if(getActivity().getSupportLoaderManager().getLoader(R.id.myLoaderId) == null)
{
getActivity().getSupportLoaderManager().initLoader(R.id.myLoaderId, null, this);
}
else
{
getActivity().getSupportLoaderManager().restartLoader(R.id.myLoaderId, null, this);
}
}
試着讓'TextViews'' INVISIBLE'而不是'GONE'。 – sonictt1
你可以發佈你的代碼顯示發生了什麼?如果數據發生變化,您應該能夠簡單地調用recyclerView.getAdapter()。notifyDataSetChanged();並且它應該正確重繪recyclerView。 – LNI
@LNI我這樣做,但如上所述,問題出現在短時間內(我猜'RecyclerView'更新),然後它正確呈現。 – OneEyeQuestion