2016-03-02 75 views
4

我有一个RecyclerView,这是一个BottomSheet,从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(); 
    } 

我展示RecyclerView:

private void showMultiCar(final List<Car> cars) { 
    mBottomSheetMultiCarBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 

    mMultiCarAdapter.replaceItems(cars); 
} 

我显示了RecyclerView后,它出现了(我看到一个带有RecyclerView背景色的BottomSheet)。然而,没有任何项目是可见的......直到我做了一些行动。确认的行为,使RecyclerView显示项目:

  • 我更改其他视图的可见性;
  • 我点击RecyclerView

我试过许多东西。

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

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

+0

是的。正如我所提到的,项目出现在一些用户界面事件之后。 –

回答

1

的recyclerView需要有一个固定大小:

mRecyclerView.setHasFixedSize(true); 

花了太长的方式摸不着头脑。不知道为什么它的工作原理,但它确实。