我有一个来自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);

花了太长时间才弄明白。不知道它为什么会起作用,但它确实起作用了。

07-24 09:47
查看更多