2017-11-26 9 views
0

RecyclerViewを使用して選択可能なアイテムを表示しています。ただし、選択したアイテムがFirestoreトランザクションで更新されると、その選択は消滅します。私はそれが更新される項目でnotifyItemChangedを呼び出すと仮定していますが、選択状態を保持する方法はわかりません。私は、項目を選択するには、このコードを使用しています:FirebaseRecyclerAdapterのRecyclerviewは、アイテムが更新されたときに選択されたアイテムの選択を解除します。

holder.itemView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     int currentPosition = holder.getLayoutPosition(); 
     if(selectedPosition != currentPosition){ 
      // Temporarily save the last selected position 
      int lastSelectedPosition = selectedPosition; 
      // Save the new selected position 
      selectedPosition = currentPosition; 
      // update the previous selected row 
      notifyItemChanged(lastSelectedPosition); 
      // select the clicked row 
      holder.itemView.setSelected(true); 
     } 
    } 
}); 

とレイアウトを強調するために、このコード:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Color when the row is selected --> 
    <item android:drawable="@android:color/darker_gray" android:state_pressed="false" android:state_selected="true" /> 
    <!-- Standard background color --> 
    <item android:drawable="@android:color/white" android:state_selected="false" /> 
</selector> 

答えて

0

私が以前に選択した項目から値を格納することによってこの問題を解決することになったし、すべてをループ理想的ではないが現在のところうまくいきます。

関連する問題