我有一个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的可见性,但似乎必须经过一段时间才能生效。
我尝试了几种方法:requestLayout,invalidate。
答案 0 :(得分:1)
recyclerView需要固定大小:
mRecyclerView.setHasFixedSize(true);
花了太长时间搞清楚这一点。不确定为什么它有效,但确实如此。