MyRecyclerView不调用onCreateViewHolder,onBindViewHolder甚至MenuViewHolder构造函数,因此在RecyclerView. 我放了调试日志,没有显示日志。可能是什么问题?
RecyclerView
onCreateViewHolder
onBindViewHolder
MenuViewHolder
我的适配器:
public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.MenuViewHolder> { private LayoutInflater inflater; List<Menu> data = Collections.emptyList(); public MenuAdapter(Context context, List<Menu> data) { Log.i("DEBUG", "Constructor"); inflater = LayoutInflater.from(context); Log.i("DEBUG MENU - CONSTRUCTOR", inflater.toString()); this.data = data; for(Menu menu: this.data){ Log.i("DEBUG MENU - CONSTRUCTOR", menu.menu); } } @Override public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.row_menu, parent, false); MenuViewHolder holder = new MenuViewHolder(view); return holder; } @Override public void onBindViewHolder(MenuViewHolder holder, int position) { Log.i("DEBUG MENU", "onBindViewHolder"); Menu current = data.get(position); holder.title.setText(current.menu); } @Override public int getItemCount() { return 0; } class MenuViewHolder extends RecyclerView.ViewHolder { TextView title; ImageView icon; public MenuViewHolder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.menuText); } }
我的自定义行 XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/menuText" android:text="Dummy Text" android:layout_gravity="center_vertical" android:textColor="#222"/>
和我的片段:
public NavigationFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, "false")); if (savedInstanceState != null) { mFromSavedInstaceState = true; } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_navigation, container, false); RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.drawer_list); MenuAdapter adapter = new MenuAdapter(getActivity(), getData()); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setAdapter(adapter); return view; }
你的getItemCount方法returns 0。所以RecyclerView永远不要尝试实例化视图。让它返回一些东西greater than 0。
getItemCount
returns 0
greater than 0
例如
@Override public int getItemCount() { return data.size(); }