から選択した項目の更新リサイクラービューに必要な提案。私の要件は次のとおりです: - 私は2つの配列を与えるWebサービスを呼び出す必要があります。 1つはリストに表示する必要のあるデータです。この目的のために、私はRecyclerView
を使用しています。他の配列はステータスです。これはスピナーで表示しています。このWebサービスはページ番号が付けられています。私は改ページを追加して、うまくいきます。 - ユーザーがスピナーから他の要素を選択すると、再びWebサービスコールを作成し、リサイクルビューのデータを変更する必要があります。アンドロイド:私はリサイクルビューに新しいですスピナー
mAccountListingsAdapter.notifyItemRangeInserted(mAccountListingsAdapter.getItemCount(), mListings.size() - 1);
をそして、私はスピナーからデータを変更すると、私は次のことをやっている:私は連続したページからより多くのデータを得れば は現在、ページネーションの場合には、私は、次のことをやって
mListings.clear();//Clear the data set
mAccountListingsAdapter.notifyDataSetChanged();//Call notify data set changed on recycler view adapter
getAccountListings();//Fetch new data from the web service and display in recycler view
しかし、リサイクラ・ビュー・アダプタでnotifyDataSetChanged()を直接呼び出すのではなく、特定のnotifyXXXメソッドをコールして、パフォーマンスとアニメーションの問題を回避する必要があります。
私はスピナーのonItemSelected()
にリサイクルビューアダプタを通知する権利をやっている、またはそれを変更しなければならないのであれば、私は、疑いの下にいます。
P.S.
int size = mListings.size();
mListings.clear();
mAccountListingsAdapter.notifyItemRangeRemoved(0, size - 1);
しかし、それはクラッシュし、次の例外を除いて:私はonItemSelected
に、次の試してみました
03-02 12:59:41.046: E/AndroidRuntime(4270): java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 4(offset:0).state:5
+1私のミスアビシェーク - 私は私の答えを書き始め、最終的にそれを投稿する前に休憩を取りました。その間に他の誰かが回答を投稿したかもしれないということは私には起こりませんでした。今のところ、私はそれが提供する他の情報のために答えを掲載し続けます。 @Vikram確かに。 – Vikram
問題ない。 –