Изменение размера всех ячеек повторного просмотра на itemTouchhelper во время перетаскивания / изменения порядка - PullRequest
0 голосов
/ 15 мая 2019

У меня есть горизонтальное окно повторного просмотра, в котором реализован обратный вызов ItemTouchHelper для перетаскивания и изменения порядка ячеек. Когда ячейка перемещается, я хочу уменьшить ширину всех ячеек, чтобы они все отображались на экране. В onItemSelected () я могу успешно изменить размер ячейки, которая в данный момент перемещается, и вернуться обратно в onItemClear.

Однако я хочу изменить размеры всех ячеек, а не только текущей ячейки. Каков наилучший подход для этого?

Я попытался создать функцию в своем классе адаптера и вызвать ее для изменения размера с помощью notifyDataSetChanged (), однако она удаляла текущую перемещаемую ячейку.

Есть ли способ сделать это как часть моего ItemTouchHelperCallback - создать функцию, подобную onItemSelected, но обновить все другие ячейки?

1 Ответ

0 голосов
/ 15 мая 2019

Я не уверен, что полностью понимаю, что вы пытаетесь сделать, но я думаю, что это может помочь:


        int childs = recyclerView.getChildCount();
        for (int i = 0; i < childs; i++) {
            View child = recyclerView.getChildAt(i);
            if (child != null) {
                RecyclerView.ViewHolder vholder = recyclerView.getChildViewHolder(child);
                if (vholder != null) {
                    ViewHolder holder = (ViewHolder) vholder;
                    if (holder.view != null) {
                        LayoutParams params = (LayoutParams)holder.view.getLayoutParams();
                        params.width = <new_width>;
                        params.height = <new_height>;
                        holder.view.setLayoutParams(params);
                    }
                }
            }
        }

Удачного кодирования !!

...