2016-03-02 76 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); 

花了太長的方式摸不着頭腦。不知道爲什麼它的工作原理,但它確實。