我有一个来自23.2支持库的RecyclerView,这是一个底页:
<android.support.v7.widget.RecyclerView
android:id="@+id/bottom_sheet_multi_car"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_height"
android:background="@color/background"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"/>
最初,我使用空数据集创建适配器:
mMultiCarAdapter = new CarListRecyclerAdapter();
bottomSheetMultiCar.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
bottomSheetMultiCar.setLayoutManager(new LinearLayoutManager(getContext()));
bottomSheetMultiCar.setAdapter(mMultiCarAdapter);
...
public static class CarListRecyclerAdapter extends RecyclerView.Adapter<CarListRecyclerAdapter.ViewHolder> {
private List<Car> mCars = new ArrayList<>();
我有一个方法来替换我的数据:
public void replaceItems(final List<Car> cars) {
mCars.clear();
mCars.addAll(cars);
notifyDataSetChanged();
}
我展示回收服务:
private void showMultiCar(final List<Car> cars) {
mBottomSheetMultiCarBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
mMultiCarAdapter.replaceItems(cars);
}
在我展示了recyclerview之后,它出现了(我看到了一个带有recyclerview背景色的底片)。但是,没有可见的项目…直到我采取行动。使RecyclerView显示项目的已确认操作:
改变其他视图的可见性;
我单击RecyclerView
我试了很多东西。
首先,在添加项目后更改recyclerview的可见性,但似乎必须经过一段时间才能生效。
我尝试了几种方法:requestlayout,invalidate。
最佳答案
RecyclerView需要固定大小:
mRecyclerView.setHasFixedSize(true);
花了太长时间才弄明白。不知道它为什么会起作用,但它确实起作用了。