Как мне получить текущую позицию при перетаскиваниии:
Переменная ChildPosition
переменная ParentPosition
Перетаскивание происходит в методе swap.
В данном случае я получаю позицию всех элементов.
int firstPosition, int secondPosition. Позиции нажатого элемента и следующего, но мне это не надо, мне надо получить позицию группы в которой он находится сейчас и какая у него позиция в данной группе.
Вообщем надо чтобы в методе swap
было также как в методе onBindChildViewHolder
Будто это не ExpandedRecyclerView, а ListView.
Поэтому не знаю как получить позицию элемента и в какой группе он находится в данный момент.
compile 'com.bignerdranch.android:expandablerecyclerview:2.1.1'
public class RecipeAdapter extends ExpandableRecyclerAdapter
<Recipe,Ingredient,RecipeAdapter.RecipeViewHolder,RecipeAdapter.IngredientViewHolder> {
Context context;
public RecipeAdapter(@NonNull List<Recipe> parentList, Context context) {
super(parentList);
this.context = context;
}
/**
* Primary constructor. Sets up {@link #mParentList} and {@link #mFlatItemList}.
* <p>
* Any changes to {@link #mParentList} should be made on the original instance, and notified via
* {@link #notifyParentInserted(int)}
* {@link #notifyParentRemoved(int)}
* {@link #notifyParentChanged(int)}
* {@link #notifyParentRangeInserted(int, int)}
* {@link #notifyChildInserted(int, int)}
* {@link #notifyChildRemoved(int, int)}
* {@link #notifyChildChanged(int, int)}
* methods and not the notify methods of RecyclerView.Adapter.
*
* @param parentList List of all parents to be displayed in the RecyclerView that this
* adapter is linked to
*/
public RecipeAdapter(@NonNull List<Recipe> parentList) {
super(parentList);
}
@NonNull
@Override
public RecipeViewHolder onCreateParentViewHolder(@NonNull ViewGroup parentViewGroup, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.adap_main_group,parentViewGroup,false);
return new RecipeViewHolder(view);
}
@NonNull
@Override
public IngredientViewHolder onCreateChildViewHolder(@NonNull ViewGroup childViewGroup, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.adap_main_item,childViewGroup,false);
return new IngredientViewHolder(view);
}
@Override
public void onBindParentViewHolder(@NonNull RecipeViewHolder parentViewHolder, int parentPosition, @NonNull Recipe parent) {
parentViewHolder.txtGroup.setText("GROUP");
}
@Override
public void onBindChildViewHolder(@NonNull IngredientViewHolder childViewHolder, int parentPosition, int childPosition, @NonNull Ingredient child) {
childViewHolder.txtProfText.setText("CHILD");
}
public void swap(RecyclerView recyclerView, int firstPosition, int secondPosition, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target){
Collections.swap(mFlatItemList, firstPosition, secondPosition);
notifyParentMoved(firstPosition,secondPosition);
}
class RecipeViewHolder extends ParentViewHolder {
private TextView txtGroup;
public RecipeViewHolder(View itemView) {
super(itemView);
txtGroup = (TextView) itemView.findViewById(R.id.txtGroup);
}
}
class IngredientViewHolder extends ChildViewHolder {
private TextView txtProfText;
public IngredientViewHolder(View itemView) {
super(itemView);
txtProfText = (TextView) itemView.findViewById(R.id.txtProfText);
}
}
}
Сам интерфейл Swap выглядит вот так
public class MovieTouchHelper extends ItemTouchHelper.SimpleCallback {
private RecipeAdapter recipeAdapter;
public MovieTouchHelper(RecipeAdapter recipeAdapter){
super(ItemTouchHelper.UP | ItemTouchHelper.DOWN,0);
this.recipeAdapter = recipeAdapter;
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
recipeAdapter.swap(recyclerView,viewHolder.getAdapterPosition(), target.getAdapterPosition(),viewHolder,target);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
}
Если кто сможет помочь то могу скинуть исходники, В инете видел много библиотек вроде Ultimate, Expandebla и т.д., но все без толку. Это не то. То там кода много и доков мало, то еще какие то проблемы.
Видео ExpandableRecyclerView
Позицию можно получить из onBindChildViewHolder А после использовать в swap
Возьмите этот драггер/свайпер
Android-ItemTouchHelper - я использую этот и у меня все работает - и драггинг и свайп.
И перестаньте ругаться - это вас не красит.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Разработайте приложение "Модификация одномерного массива", которое позволяет пользователю:
Где можно узнать какие пакеты полностью совпадают в Java 8 и Android 4x и выше? Какие пакеты совпадают полностью? Например java
Как сгенерировать таблицу, с необходимым количеством столбцов, равным количеству элементов массива?