Recyclerview不叫onCreateViewHolder [英] Recyclerview not call onCreateViewHolder
本文介绍了Recyclerview不叫onCreateViewHolder的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的 RecyclerView
不叫 onCreateViewHolder
, onBindViewHolder
甚至 MenuViewHolder
的构造函数,因此,不会出现在 RecyclerView
东西。
我把日志进行调试,并没有记录显示。
有什么可以?
我的适配器:
公共类MenuAdapter扩展RecyclerView.Adapter< MenuAdapter.MenuViewHolder> {
私人LayoutInflater吹气;
清单<菜单>数据= Collections.emptyList();公共MenuAdapter(上下文的背景下,列表与LT;菜单>数据){
Log.i(调试,Construtor);
充气= LayoutInflater.from(上下文);
Log.i(DEBUG菜单 - CONSTRUTOR,inflater.toString());
this.data =数据;
对于(菜单菜单:this.data){
Log.i(DEBUG菜单 - CONSTRUTOR,menu.menu);
}
}@覆盖
公共MenuViewHolder onCreateViewHolder(ViewGroup中的父母,INT viewType){
查看查看= inflater.inflate(R.layout.row_menu,父母,假);
MenuViewHolder持有人=新MenuViewHolder(视图);
回到持有人;
}@覆盖
公共无效onBindViewHolder(MenuViewHolder持有人,INT位置){
Log.i(DEBUG MENU,onBindViewHolder);
菜单电流= data.get(位置);
holder.title.setText(current.menu);
}@覆盖
公众诠释getItemCount(){
返回0;
}类MenuViewHolder扩展RecyclerView.ViewHolder {
TextView的称号;
ImageView的图标; 公共MenuViewHolder(查看ItemView控件){
超(ItemView控件);
标题=(TextView中)itemView.findViewById(R.id.menuText);
}
}
我的自定义行XML:
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=横向的android:layout_width =match_parent
机器人:layout_height =match_parent><的TextView
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / menuText
机器人:文字=虚拟文本
机器人:layout_gravity =center_vertical
机器人:文字颜色=#222/>
和我的片段:
公共NavigationFragment(){
//必需的空公共构造
}@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
mUserLearnedDrawer =通过Boolean.valueOf(readFrom preferences(getActivity(),KEY_USER_LEARNED_DRAWER,假));
如果(savedInstanceState!= NULL){
mFromSavedInstaceState = TRUE;
}
}@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
//充气的布局该片段 查看查看= inflater.inflate(R.layout.fragment_navigation,集装箱,FALSE);
RecyclerView recyclerView =(RecyclerView)view.findViewById(R.id.drawer_list);
MenuAdapter适配器=新MenuAdapter(getActivity(),的getData());
recyclerView.setAdapter(适配器);
recyclerView.setLayoutManager(新LinearLayoutManager(getActivity()));
recyclerView.setAdapter(适配器);
返回视图。
}
解决方案
您getItemCount方法返回0所以RecyclerView从不试图创建一个视图。让它返回的东西大于0。
my RecyclerView
do not call onCreateViewHolder
, onBindViewHolder
even MenuViewHolder
constructor, therefore, does not appear anything in RecyclerView
.
I put logs for debugging, and no log is shown.
What can be?
My adapter:
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", "Construtor");
inflater = LayoutInflater.from(context);
Log.i("DEBUG MENU - CONSTRUTOR", inflater.toString());
this.data = data;
for(Menu menu: this.data){
Log.i("DEBUG MENU - CONSTRUTOR", 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);
}
}
My custom row 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"/>
and my Fragment:
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.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
return view;
}
解决方案
Your getItemCount method returns 0. So RecyclerView never tries to instantiate a view. Make it return something greater than 0.
这篇关于Recyclerview不叫onCreateViewHolder的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文