我有一个Recyclerview填充了用户插入的项目.我正在实现旋转的功能,因为当我转动设备时,recyclerview显示为空.
调试应用程序,我已经检查旋转之前和之前的完整性,并且ArrayList具有相同的大小.我认为问题是Recyclerview的setNestedScrollingEnabled(false),我设置了这个,因为我不想在rv中显示滚动.
问题是:我处于纵向模式,我添加了3个项目,它在recyclerview中显示我很完美.检查图像:
当我将屏幕旋转到横向时,recyclerview的arraylist有3个项目,但高度不会改变,所以它只有一个项目.
那么,我如何解决这个问题?
Recyclerview:
itemsRv = (RecyclerView) findViewById(R.id.itemsRv);
itemsRv.setNestedScrollingEnabled(false);
itemAutoCompleteAdapter = new ItemAutoCompleteAdapter(this);
if(items ==null){
items = new ArrayList<>();
}
itemsAdapter = new ItemsRowAdapter(this,items,new ItemsRowAdapter.itemsRowListener() {
@Override
public void editarItemOnClick(View v,int position) {
editar_item(items.get(position),position);
}
@Override
public void eliminarItemOnClick(View v,final int position) {
}
});
itemsRv.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
itemsRv.setLayoutManager(mLayoutManager);
itemsRv.setAdapter(itemsAdapter);
布局:
我试图将android:layout_height更改为wrap_content和match_parent但没有成功.
非常感谢你!
最佳答案
我找到了解决方案.
原文链接:https://www.f2er.com/android/430100.html我将Recyclerview放在RelativeLayout中,如下所示:
在代码中,我添加了这个
itemsRv.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
itemsRv.setLayoutManager(mLayoutManager);
RelativeLayout.LayoutParams lp =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT); //<--- ADD
itemsRv.setLayoutParams(lp);//<--- ADD
itemsRv.setAdapter(itemsAdapter);
它完美无缺,我从https://stackoverflow.com/a/34543165/3200714开始就有了这个想法