Забелязах тези библиотеки и нямах търпение да ги използвам в приложението си. Моят RecyclerView
използва StaggeredGridLayoutManager
, за да организира viewHolders
и съм записал следния код:
ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END,
ItemTouchHelper.START | ItemTouchHelper.END) {
@Override
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
mAdapter.move(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mAdapter.remove(viewHolder.getAdapterPosition());
}
});
helper.attachToRecyclerView(mRecyclerView);
Има два проблема:
Плъзгането на елемент няма да промени неговите
alpha
наdeltaX
.Представете си, че има 3 елемента в
RecyclerView
(което има 2 колони):- the first is a middle-size one;
- вторият е по-малък от първия;
- третият е най-големият.
Ако преместя третия на първо място, превъртете RecyclerView
надолу (другите елементи няма да повлияят на първите 3) и след това нагоре, вторият и третият ще бъдат напълно същите.
Изглежда, че трябва да напиша персонализиран ItemTouchHelper
, за да добавя alpha
анимация, за да реша първия проблем и че не съм използвал тези класове правилно и по този начин съм причинил втория проблем.
В резултат на това коя е най-добрата проба за използване на ItemTouchHelper
? Или как да внедрите персонализиран? Благодаря предварително за всички отговори или коментари.