2017-12-07 16 views
0

私はItemTouchHelper.SimpleCallbackで作成したonSwipeメソッドを追加しようとするFirebaseRecyclerAdapterを持っています。以下はスワイプ時にfirebaseのエントリを削除しようとしている私のコードです。以下のコードは、実際にはfirebaseエントリを削除しますが、リスト内の最後のエントリは常に削除されます。私はそれが間違った方法でlist_idを解析することと関係があると思います。 populateViewHolder内でonSwipeを呼び出すことは可能でしょうか?FirebaseRecycleAdapter適切な方法でonSwipeを追加する

private String other_id; 


protected void onStart() { 
    super.onStart(); 

final FirebaseRecyclerAdapter<Lists, ListAdapter.ListsViewHolder> listsRecycleViewAdapter = new FirebaseRecyclerAdapter<Lists, ListAdapter.ListsViewHolder>(
      Lists.class, 
      R.layout.list_single_layout, 
      ListAdapter.ListsViewHolder.class, 
      mDoneListRef 


    ) { 
     @Override 
     protected void populateViewHolder(final ListAdapter.ListsViewHolder viewHolder, Lists model, final int position) { 

      final String list_id = getRef(viewHolder.getAdapterPosition()).getKey(); 

      other_id = list_id; 

      mDoneListRef.child(list_id).addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if (dataSnapshot.exists()) { 

        //do stuff 

        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
     } 
    }; 

    mListView.setAdapter(listsRecycleViewAdapter); 

} 

@Override 
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position) { 


    mDoneListRef.child(other_id).removeValue(); 
} 

答えて

1

あなたはonSwipedに渡されるpositionパラメータによってスワイプされたアイテムをルックアップする必要があります。これらの線に沿ったもの:

public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position) { 
    listsRecycleViewAdapter.getRef(position).removeValue(); 
} 
関連する問題