So I have a recyclerview loaded with Firebase Firestore Documents and I want to see if it is beeing swiped up or down. Depending on the direction I want to make the adapter.startListening(); again and stop if he swipes down. I also want to hide a button if the user scrolls down. I just need to figure out how can I see if he does that ?
This piece of code was working with left and right but for some reason won´t with up and down ?
new ItemTouchHelper( new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.UP | ItemTouchHelper.DOWN) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
if(direction == ItemTouchHelper.UP){
Toast.makeText(getActivity(), "You swiped up", Toast.LENGTH_LONG).show();
}
}
});
Here the complete code if it some reason interfers with smth don´t know
public class HomeFragment extends Fragment {
View myFragment;
private ImageButton postButton;
CollectionReference postsRef;
FirebaseFirestore db;
private PostsAdapter adapter;
FirebaseAuth mAuth;
RecyclerView recyclerView;
public static ProfileFragment getInstance() {
return new ProfileFragment();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myFragment = inflater.inflate(R.layout.fragment_home, container, false);
postButton = myFragment.findViewById( R.id.postButton);
recyclerView = myFragment.findViewById(R.id.postlist);
mAuth = FirebaseAuth.getInstance();
db = FirebaseFirestore.getInstance();
postsRef = db.collection("posts");
SetupRecyclerView();
postButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
SendUserToPostActivity();
}
});
new ItemTouchHelper( new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.UP | ItemTouchHelper.DOWN) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
if(direction == ItemTouchHelper.UP){
Toast.makeText(getActivity(), "You swiped up", Toast.LENGTH_LONG).show();
}
}
});
adapter.setOnConfirmClickListener( new PostsAdapter.onConfirmClickListener() {
@Override
public void onConfirmClick(DocumentSnapshot documentSnapshot, int position) {
Posts post = documentSnapshot.toObject(Posts.class);
String id = documentSnapshot.getId();
if(post.getUid().equals(mAuth.getCurrentUser().getUid())){
adapter.deleteItem(position);
Toast.makeText(getActivity(), "Post deleted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), "You cannot delete this", Toast.LENGTH_LONG).show();
}
}
});
return myFragment;
}
@Override
public void onStart(){
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
private void SetupRecyclerView() {
Query query = postsRef.orderBy("time", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Posts> options = new FirestoreRecyclerOptions.Builder<Posts>().setQuery(query, Posts.class).build();
adapter = new PostsAdapter(options);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(adapter);
}
private void SendUserToPostActivity() {
Intent postIntent = new Intent(getActivity(), PostActivity.class);
startActivity(postIntent);
}
}