RecyclerView不显示

我有一个RecyclerView不显示任何项目。 最初它是空的,但后来我添加项目并调用notifyDatasetChanged()。 getItemCount()被调用并返回25,onBindViewHolder被调用3次并正确设置视图。

public AlbumListAdapter(FacebookActivity activity, long pageId, OnItemClickListener listener){ this.listener = listener; this.inflater = LayoutInflater.from(activity); this.service = new PagedGraphService<Album>(String.format("https://graph.facebook.com/%d/albums", pageId), new PagedGraphService.ServiceUpdateListener() { @Override public void dataUpdated() { notifyDataSetChanged(); } @Override public void endReached() { } }, new TypeToken<PagedGraphService.GraphResponse<Album>>(){}.getType()); } @Override public AlbumHolder onCreateViewHolder(ViewGroup viewGroup, int i) { return new AlbumHolder(inflater.inflate(R.layout.photo_album_list_card, viewGroup, false)); } @Override public void onBindViewHolder(AlbumHolder viewHolder, int i) { viewHolder.setAlbum(service.get(i)); } @Override public int getItemCount() { return service.getLoadedCount(); } 

它的要点。 该服务包含相册列表,并通过调用dataUpdated()和endReached()来向适配器通知更改。

更多代码:

 @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { RecyclerView view = (RecyclerView) inflater.inflate(R.layout.recycler, container, false); view.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)); view.setHasFixedSize(false); AlbumListAdapter adapter = new AlbumListAdapter(activity, FacebookActivity.PSM_PAGE_ID, this); view.setAdapter(adapter); return view; } <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> 

更多的代码:

活动布局

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/toolbar"/> <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> 

列表项目布局:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/album_list_title" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v7.widget.CardView> 

列表布局:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> 

我一直在戳代码几个小时,我不知道为什么它不起作用

Solutions Collecting From Web of "RecyclerView不显示"

我是一个白痴。

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/toolbar"/> <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> 

LinearLayout的默认方向是水平的,工具栏的宽度是match_parent ,所以我的内容在屏幕外。 这可能是Android上最stream行的错误之一,这就是为什么你得到一个警告,但include必须隐藏它。