私はRecyclerView
を持っていますが、アイテムはLinearLayout
であり、いくつかは子どもとしてTextViews
です。いくつかの規則(これはonBindViewHolder
で決定されます)によっては、TextViews
が隠れている(可視性がなくなっている)か、表示されている可能性があります。子どもを隠す/表示するアイテムを含むRecyclerView
RecyclerView
の例では、3つの項目(A、B、C)が表示され、同じ数字がTextViews
であり、Aがリストの最上部にある場合、中間のBと下部のC例えば、Bが以前よりもTextViews
を表示しなければならない場合、短時間の間、この項目(B)は、サイズが大きくなり、以前に可視性GONEであった新しい表示TextViews
に対応する必要があるため、Cと重複する。問題の
ビジュアル表現:
理想の状況
現在、望ましくない状況
少し後にRecyclerView
が項目を正しく収容します。
どうしたらこのようなことを回避できますか?
EDIT:
コメントの一つでは、私は自分自身をアニメーションとビューを変換する必要がある場合がありますことを示唆しています。それが必要なのですか、それを行う別の方法がありますか?もしそうなら、どうやってアニメーションを作成し、ビューを変換できますか?
EDIT 2:Animating items、しかし、問題は解消されない:
この回答をしようとしました。 RecyclerView
が更新されるまで表示されるまでの遅延があります。
EDIT 3:
私はRecyclerView
移入アダプタのベースとして、このクラス(RecyclerViewCursorAdapter)を使用しています。あなたのXML(アイテムビュー)で、デフォルトの属性でのTextViewを宣言します:Aditionally、私は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);
}
}
'GONE'の代わりに' TextViews'を 'INVISIBLE'にしてみてください。 – sonictt1
何が起きているのかを示すコードを投稿できますか?データが変更された場合、単にrecyclerView.getAdapter()を呼び出すことができるはずです。notifyDataSetChanged(); recyclerViewを正しく再描画する必要があります。 – LNI
@LNI私はそれをやっていますが、述べたように、短期間に問題が発生します(私は 'RecyclerView'が更新されていると思います)、正しくレンダリングされます。 – OneEyeQuestion