Mal*_*qui 135 java android android-recyclerview
我RecyclerView
不打电话onCreateViewHolder
,onBindViewHolder
即使是MenuViewHolder
构造函数,因此没有出现RecyclerView
.我把日志用于调试,没有显示日志.可能是什么问题?
我的适配器:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的自定义行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"/>
Run Code Online (Sandbox Code Playgroud)
和我的碎片:
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;
}
Run Code Online (Sandbox Code Playgroud)
Lay*_*ros 373
另一个是确保将布局管理器设置为RecyclerView:
recycler.setLayoutManager(new LinearLayoutManager(this));
Run Code Online (Sandbox Code Playgroud)
Kon*_*rov 210
你的getItemCount
方法returns 0
.所以RecyclerView
永远不要尝试实例化一个视图.让它返回一些东西greater than 0
.
例如
@Override
public int getItemCount() {
return data.size();
}
Run Code Online (Sandbox Code Playgroud)
Sai*_*i N 38
我添加它为我工作后忘了添加下面的行
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
Run Code Online (Sandbox Code Playgroud)
the*_*_mr 18
我真的很希望有一天这能帮助某人。我刚刚花了一个多小时来解决这个问题!
我有这个:
projects_recycler_view.apply {
this.layoutManager = linearLayoutManager
this.adapter = adapter
}
Run Code Online (Sandbox Code Playgroud)
当我应该有这个的时候:
projects_recycler_view.apply {
this.layoutManager = linearLayoutManager
this.adapter = projectAdapter
}
Run Code Online (Sandbox Code Playgroud)
因为我愚蠢地调用了我的适配器adapter
,它被应用块中的回收器视图的适配器遮住了!我将适配器重命名为 projectAdapter 以区分它并解决了问题!
ven*_*nky 13
这不适用于您的特定情况.但这可能会帮助别人.
这个原因可能是不小心使用以下方法
recyclerView.setHasFixedSize(true);
Run Code Online (Sandbox Code Playgroud)
如果不小心使用,这可能会导致onBindView
和onCreateViewHolder
根本不被调用,日志中没有错误.
对于它的价值,我在实际初始化适配器之前设置了Recycler视图适配器时观察到了它.解决方案是确保recyclerView.setAdapter(adapter)
使用非null适配器调用
小智 9
请设置布局管理器为RecyclerView
如下代码:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view_right);
//set your recycler view adapter here
NavigationAdapter adapter = new NavigationAdapter(this, FragmentDrawer.getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70343 次 |
最近记录: |