在拖动/重新排序期间调整itemTouchhelper上所有recyclerview单元的大小

时间:2019-05-15 12:38:17

标签: java android kotlin androidx itemtouchhelper

我有一个水平的recyclerview,它实现了ItemTouchHelper回调,用于拖动和重新排序单元格。移动单元格时,我想缩小所有单元格的宽度,以便它们都出现在屏幕上。在onItemSelected()中,我可以成功更改当前正在移动的单元格的大小,并在onItemClear中还原。

但是,我想调整所有单元格的大小,而不仅仅是当前单元格。最好的方法是什么?

我尝试在适配器类中创建一个函数,并通过notifyDataSetChanged()调用该函数以调整大小,但是它正在删除当前移动的单元格。

作为ItemTouchHelperCallback的一部分,有没有办法做到这一点-创建与onItemSelected类似的功能,但会更新所有其他单元格?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全了解您要做什么,但是我认为这可能会有所帮助:


        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);
                    }
                }
            }
        }

编码愉快!!