RecyclerView不显示数据

时间:2016-03-02 13:41:32

标签: android android-recyclerview android-support-library

我有一个RecyclerView,它是一个BottomSheet,来自23.2支持库:

app.service('UBOService', function($http) {

    return {
        get : function() {
            return $http.get('/api/user-booked-opportunities');
        },

        destroy : function(id) {

            return $http.delete('/api/user-booked-opportunities/' +  id);
        }
    }
})

最初,我使用空数据集创建适配器:

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

我展示了RecyclerView:

    public void replaceItems(final List<Car> cars) {
        mCars.clear();
        mCars.addAll(cars);
        notifyDataSetChanged();
    }

显示RecyclerView后,它会出现(我看到带有RecyclerView背景颜色的BottomSheet)。但是,在我做某些动作之前,没有任何项目可见。确认使RecyclerView显示项目的操作:

  • 我改变了其他观点的可见度;
  • 我点击RecyclerView

我尝试了很多东西。

首先,在添加项目后更改RecyclerView的可见性,但似乎必须经过一段时间才能生效。

我尝试了几种方法:requestLayout,invalidate。

1 个答案:

答案 0 :(得分:1)

recyclerView需要固定大小:

mRecyclerView.setHasFixedSize(true);

花了太长时间搞清楚这一点。不确定为什么它有效,但确实如此。