回收站视图不显示

我一直在制作一个应用程序,在导航抽屉中使用回收站视图,回收站视图的内容没有显示出来。 这个视图是绝对的,因为我可以看到滚动阴影。 我不确定我是否做错了,因为应用程序在运行时不会崩溃。

导航抽屉碎片:

public class NavigationDrawerFragment extends android.support.v4.app.Fragment { public static final String PREF_FILE_NAME = "testPref"; public static final String KEY_USER_LEARNED_DRAWER = "user_learned_drawer"; private RecyclerView mRecyclerView; private ActionBarDrawerToggle mDrawerToggle; private DrawerLayout mDrawerLayout; private View containerView; private Boolean mUserLearnedDrawer; private Boolean mFromSavedInstanceState; private DrawerAdapter adapter; public NavigationDrawerFragment() { mFromSavedInstanceState = false; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, "false")); if (savedInstanceState != null){ mFromSavedInstanceState = true; } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false); mRecyclerView = (RecyclerView) layout.findViewById(R.id.drawerList); adapter = new DrawerAdapter(getActivity(), getData()); mRecyclerView.setAdapter(adapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); return layout; } public static List<DrawerRow> getData(){ List<DrawerRow> data = new ArrayList<>(); int icons[] = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher}; String titles[] = {"Link 1","Link 2","Link 3","Link 4"}; for (int i = 0 ; i < titles.length && i < icons.length; i++){ DrawerRow current = new DrawerRow(); current.iconId = icons[i]; current.title = titles[i]; data.add(current); } return data; } public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) { containerView = getActivity().findViewById(fragmentId); mDrawerLayout = drawerLayout; mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawerOpen, R.string.drawerClosed){ @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); if(!mUserLearnedDrawer){ mUserLearnedDrawer = true; saveToPreferences(getActivity(),KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer+""); } getActivity().invalidateOptionsMenu(); } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); getActivity().invalidateOptionsMenu(); } }; if(!mUserLearnedDrawer && !mFromSavedInstanceState){ mDrawerLayout.openDrawer(containerView); } mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.post(new Runnable() { @Override public void run() { mDrawerToggle.syncState(); } }); } public void saveToPreferences(Context context, String prefName, String prefValue){ SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor mEditor = sharedPreferences.edit(); mEditor.putString(prefName, prefValue); mEditor.apply(); } public static String readFromPreferences(Context context, String prefName, String defaultValue){ SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); return sharedPreferences.getString(prefName,defaultValue); } } 

适配器:

 public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.MyViewHolder>{ private LayoutInflater inflator; List<DrawerRow> data = Collections.EMPTY_LIST; public DrawerAdapter(FragmentActivity activity, List<DrawerRow> data) { inflator = LayoutInflater.from(activity); this.data = data; } @Override public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = inflator.inflate(R.layout.nav_drawer_row , viewGroup,false); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder viewHolder, int i) { DrawerRow current = data.get(i); viewHolder.title.setText(current.title); viewHolder.icon.setImageResource(current.iconId); } @Override public int getItemCount() { return 0; } class MyViewHolder extends RecyclerView.ViewHolder{ ImageView icon; TextView title; public MyViewHolder(View itemView) { super(itemView); icon = (ImageView) itemView.findViewById(R.id.list_icon); title = (TextView) itemView.findViewById(R.id.list_text); } } } 

抽屉行:

 public class DrawerRow { int iconId; String title; } 

布局:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/drawerLayout"> <!--Main Content --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include android:id="@+id/app_bar" layout="@layout/app_bar" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" /> </LinearLayout> <!--Nav Drawer --> <fragment android:layout_width="@dimen/nav_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" android:name="uk.co.clickcomputing.hhscweatherstation.NavigationDrawerFragment" android:id="@+id/fragment_navigation_drawer"/> </android.support.v4.widget.DrawerLayout> 

抽屉行:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:padding="@dimen/list_padding" android:id="@+id/list_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@drawable/ic_launcher"/> <TextView android:padding="@dimen/list_padding" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="New Text" android:id="@+id/list_text" /> </LinearLayout> 

导航抽屉片段布局:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#eee" android:orientation="vertical"> <ImageView android:layout_width="match_parent" android:layout_height="140dp" android:layout_marginBottom="8dp" android:contentDescription="@string/nav_drawer_img_desciption" android:scaleType="centerCrop" android:src="@drawable/nav_drawer" /> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/drawerList"> </android.support.v7.widget.RecyclerView> </LinearLayout> 

Solutions Collecting From Web of "回收站视图不显示"

问题是你正在返回的项目数为0,这表明没有行显示。 您应该返回列表的大小,如下所示。

  @Override public int getItemCount() { return data.size(); } 

我同意你需要返回正确的项目编号,但我认为你也可能有问题设置回收站视图的高度以及wrap_content。 我发现这个链接非常有帮助。 希望能帮助到你。