Android Recyclerview 应用程序崩溃
Posted
技术标签:
【中文标题】Android Recyclerview 应用程序崩溃【英文标题】:Android Recycleview App crash 【发布时间】:2018-06-27 08:10:54 【问题描述】:我正在尝试创建一个回收视图,并且我还在我的应用程序中使用标签布局。我一步一步地按照教程进行操作,但我不知道它为什么会崩溃。这是代码。我猜这部分有问题:
@Override
public int getItemCount()
return herosList.size();
每当我将返回值更改为 0 时,应用程序都会运行,但 recycleview
中不会出现任何内容
public class Heros
public String name;
public int img;
RecycleAdapter.java
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.HerosViewHolder>
ArrayList<Heros> herosList;
public RecycleAdapter(ArrayList<Heros> heross)
herosList=heross;
@Override
public HerosViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.eachrow,parent,false);
return new HerosViewHolder(view);
@Override
public void onBindViewHolder(HerosViewHolder holder, int position)
Heros heros=herosList.get(position);
holder.txtName.setText(heros.name);
@Override
public int getItemCount()
return herosList.size();
public class HerosViewHolder extends RecyclerView.ViewHolder
public ImageView herosImg;
public TextView txtName;
public HerosViewHolder(View itemView)
super(itemView);
herosImg=(ImageView) itemView.findViewById(R.id.imgg);
txtName=(TextView)itemView.findViewById(R.id.txtHerosName);
public class PageFragment extends Fragment
public static final String ARG_PAGE = "ARG_PAGE";
private int mPage;
RecyclerView recyclerView;
LinearLayoutManager manager;
String[] names="abs","vline","chest";
ArrayList<Heros> passName;
public static PageFragment newInstance(int page)
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
PageFragment fragment = new PageFragment();
fragment.setArguments(args);
return fragment;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
mPage = getArguments().getInt(ARG_PAGE);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
passName=new ArrayList<>();
View view = inflater.inflate(R.layout.fragment_page, container,
false);
recyclerView=(RecyclerView)view.findViewById(R.id.rec);
manager=new LinearLayoutManager(G.context);
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
for (int i=0;i<3;i++)
Heros heros=new Heros();
heros.name=names[i];
passName.add(heros);
recyclerView.setAdapter(new RecycleAdapter(passName));
return view;
【问题讨论】:
你遇到了什么错误? 添加崩溃的stacktrace 显示你的日志猫 在这个方法中使用这个关键字public RecycleAdapter(ArrayList<Heros> heross) this.herosList=heross;
任何堆栈跟踪??分享你的日志!
【参考方案1】:
检查一下它可能对你有帮助 公共类 PageFragment 扩展片段 公共静态最终字符串 ARG_PAGE = "ARG_PAGE";
private int mPage;
RecyclerView recyclerView;
LinearLayoutManager manager;
String[] names="abs","vline","chest";
ArrayList<Heros> passName;
RecycleAdapter adapter;
public static PageFragment newInstance(int page)
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
PageFragment fragment = new PageFragment();
fragment.setArguments(args);
return fragment;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
mPage = getArguments().getInt(ARG_PAGE);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
passName=new ArrayList<>();
View view = inflater.inflate(R.layout.fragment_page, container,
false);
recyclerView=(RecyclerView)view.findViewById(R.id.rec);
manager=new LinearLayoutManager(G.context);
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
for (int i=0;i<3;i++)
Heros heros=new Heros();
heros.name=names[i];
passName.add(heros);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(mLayoutManager);
adapter = new RecycleAdapter(this,passName);
recyclerView.setAdapter(adapter);
return view;
【讨论】:
【参考方案2】:当你在getItemCount()
中返回 0 时,表示 RecyclerView 中有 0 个项目。这就是为什么您在RecyclerView
中看不到任何内容的原因。
但是您面临的问题可能是由于适配器接收到错误的数据...
【讨论】:
【参考方案3】:尝试改变
manager=new LinearLayoutManager(G.context);
到
manager=new LinearLayoutManager(getActivity());
【讨论】:
以上是关于Android Recyclerview 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Android 布局:具有滚动行为的 Viewpager 内的垂直 Recyclerview 内的水平 Recyclerview
应用程序在 recyclerview 滚动 android kotlin 时崩溃