CardStackLayoutManager - не получается привязать метод CardStackListenera onCardSwiped к конкретной view, соответствующую объекту
Не могу понять, как связать методы из CradStackListener-a, чтобы они вызывали действия с объектами, состоящими в АррайЛисте объектов, которые заполняют CardStackView.
CardStackListener - это интерфейс, в котором содержатся методы, в частности onCardSwiped (см ниже в коде)
В MainActivity:
public class MainActivity extends AppCompatActivity implements CardStackListener {
private CardStackView myCardStackView;
private PersonAdapter myAdapter;
private CardStackLayoutManager myCardStackLayoutManager;
ArrayList<Person> myPersonArrayList;
protected void OnCreate(Bundle savedInstanceState) {
//...
myPersonArrayList = new ArrayList<>();
myPersonArrayList.add(new Person("Kostya"));
myPersonArrayList.add(new Person("Vitya"));
myPersonArrayList.add(new Person("Artem"));
myCardStackView = findViewById(R.id.card_stack_view);
myCardStackLayoutManager = new CardStackLayoutManager(this, this); //здесь второй "this" - это CardStackListener listener
myAdapter = new PersonAdapter(myPersonArrayList);
myCardStackView.setLayoutManager(myCardStackLayoutManager);
myCardStackView.setAdapter(myAdapter);
}
// дальше идут метода интерфейса CardStackListener:
@Override
public void onCardSwiped(Direction direction) {
if (direction == Direction.Right) {
Log.d(TAG, "onCardSwiped: called LEFT");
Toast.makeText(this, "смахнул влево", Toast.LENGTH_SHORT).show();
// здесь вместо toast-сообщения должен быть код, удаляющий текущий объект из списка.
// Я не пойму как связаться с объектом.
// При этом имя объекта на itemView нормально отображается через OnBindViewHolder
} else if (direction == Direction.Left) {
Log.d(TAG, "onCardSwiped: called RIGHT");
Toast.makeText(this, "смахнул вправо", Toast.LENGTH_SHORT).show();
}
}
В адаптере:
@Override
public void onBindViewHolder(@NonNull PersonViewHolder holder, int position) {
final Person currentPerson = myPersonArrayList.get(position);
holder.tvName.setText(currentPerson.getName());
holder.tvStatus.setText(currentPerson.getStatus());
}
(Использовал данную библиотеку:)
dependencies {
implementation "com.yuyakaido.android:card-stack-view:${LatestVersion}"
}