Big Nerd Ranchのrecyclerview-multiselectライブラリを使用して、複数選択機能を提供しています。アプリ固有の問題はほぼ解決しましたが、かなり大きな問題が発生しました。が入っていて、カードを再作成する必要があるときはいつでも(少なくとも私が正しく理解していれば、実際にはそれが のポイントであるため、多くの場合)、次のエラーがスローされます。RecyclerView
CardViews
RecyclerView
SelectionMode
RecyclerView
java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.support.v7.widget.RoundRectDrawableWithShadow
at android.support.v7.widget.CardViewEclairMr1.getShadowBackground(CardViewEclairMr1.java:159)
at android.support.v7.widget.CardViewEclairMr1.getMinWidth(CardViewEclairMr1.java:150)
at android.support.v7.widget.CardView.onMeasure(CardView.java:181)
at android.view.View.measure(View.java:16498)
論理的には、 StateListDrawable がCardView
の背景として設定される原因となっているソースにエラーを追跡しました。私が見つけたものは、このクラスのコメント セクションで要約されていました。次のように書かれています。
selectionModeBackgroundDrawable は、state_activated=true の場合に colorAccent テーマの色を表示し、それ以外の場合は何も表示しない StateListDrawable にデフォルト設定されます。
クラス内で、エラーの原因となっている が返されているSwappingHolder
場所を確認できます。StateListDrawable
また、CardViewEclairMr1.java
エラーで示唆されているように、 を調べると、エラーを最も直接的に引き起こしているメソッドを確認できます。
private RoundRectDrawableWithShadow getShadowBackground(CardViewDelegate cardView) {
return ((RoundRectDrawableWithShadow) cardView.getBackground());
}
正直に言うと、BigNerdRanch ライブラリをいろいろ調べた後でも、どうすればよいかわかりません。私@Override
はStateListDrawable
. このエラーを修正するにはどうすればよいですか?