2017-09-25 4 views
0

私はポストに述べたように、このコードを使用するように混乱を持っているhereアニメーション

を述べたように、私のRecyclerViewでアニメーションを実装しようとしています。

@Override 
    public void onViewDetachedFromWindow(final RecyclerView.ViewHolder holder) 
    { 
     ((CustomViewHolder)holder).clearAnimation(); 
    } 

そのは私にこのようなエラーを与え、私はそれを解決することはできませんよ

enter image description here

私は

public void clearAnimation() 
    { 
     mRootLayout.clearAnimation(); 
    } 

がどのように追加し、それを使用する必要がありますアドオンにも混乱を持っています?

ありがとう

+0

があなたの代わりにViewHolderの親クラス 'RecyclerView.ViewHolder'を使用してください。つまり、あなたのプロジェクトで定義したクラス型の名前を 'RecViewerView.ViewHolder'を関数' onViewDetached .... 'の引数として渡します。() ' – Gotiasits

答えて

0

は説明:

引数はRecyclerView.ViewHolderを拡張するクラスを入力として、Javaはあなたが使用してその機能を無効にさせないことを期待onViewDetachedFromWindow()方法ので、親クラス。

ソリューション:

あなたは、あなたのアダプタに渡されたジェネリック型としての引数と同じ型を使用する必要があります。お使いのアダプタクラスは次のように定義されている場合例:

private class NewQouteAdapter extends RecyclerView.Adapter<NewQouteAdapter.ViewHolder>{ ... } 

あなたはタイプのいずれかNewQouteAdapter.ViewHolderか、単にViewHolderonViewDetachedFromWindow()への関数の引数として使用することができます。

第二の部分のために、実施例で使用すると、clearAnimation()を連結としてはViewHolderクラスで定義され、そしてホルダーインスタンスでView関数を使用している、WICHは次にholderオブジェクトのインスタンスにAdapterClassで呼び出され、itemView変数を通じて利用可能です。

したり、独自のclearAnimation()を使用して、ちょうどあなたのアダプタのViewメソッドを呼び出すことはありません: holder.itemView.clearAnimation();

0

あなたの仕事を簡単にし、その機能を既に持っているライブラリを使用することはどうですか? 1. https://github.com/cymcsg/UltimateRecyclerView 2. https://android-arsenal.com/details/1/5797 3. https://github.com/h6ah4i/android-advancedrecyclerview

I m using those library sおよび作業期待通り:
は、私は個人的には、これらのlibrary`sの外観を与えるためにしようとお勧めします。

更新:正確な状況を理解するためのコードを提供していないため、ヒントを提供することができます。 onViewDetachedFromWindowでアニメーションをキャンセルしてみてください。

同じ方法でアニメーションを逆にしてみてください:

@Override 
public void onViewDetachedFromWindow(ViewHolder holder) { 
if (holder.getItemViewType() == poition) ((ItemView) 
    holder.itemView).reverseAllAnimations(); 
} 
+0

私はこれのためだけにすべてのコードを変更したくありません。私は今と同じように使いたい。ありがとう – Priya

+0

私はいくつかのヒントを与えるtryedそれがあなたを助けることを願っ:) –

関連する問題