我有一个水平的recyclerview,它实现了ItemTouchHelper回调,用于拖动和重新排序单元格。移动单元格时,我想缩小所有单元格的宽度,以便它们都出现在屏幕上。在onItemSelected()中,我可以成功更改当前正在移动的单元格的大小,并在onItemClear中还原。
但是,我想调整所有单元格的大小,而不仅仅是当前单元格。最好的方法是什么?
我尝试在适配器类中创建一个函数,并通过notifyDataSetChanged()调用该函数以调整大小,但是它正在删除当前移动的单元格。
作为ItemTouchHelperCallback的一部分,有没有办法做到这一点-创建与onItemSelected类似的功能,但会更新所有其他单元格?
答案 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);
}
}
}
}
编码愉快!!