我遇到以下问题,不幸的是我的应用程序在进行下一个活动时停止。这是罪魁祸首:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerHolder> {
ArrayList<Theme> themes;
private LayoutInflater mInflater;
public RecyclerAdapter(Context context, ArrayList<Theme> themes) {
mInflater = LayoutInflater.from(context);
this.themes = themes;
}
public class RecyclerHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView name,price;
public RecyclerHolder(View view) {
super(view);
imageView = (ImageView)view.findViewById(R.id.demo);
name = (TextView)view.findViewById(R.id.name);
price = (TextView)view.findViewById(R.id.price);
}
}
@NonNull
@Override
public RecyclerHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = mInflater.inflate(R.layout.recycler_list, viewGroup, false);
return new RecyclerHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerHolder viewHolder, int i) {
Log.i("log", themes.get(i).getName());
viewHolder.imageView.setImageResource(themes.get(i).getDrawableCover());
viewHolder.name.setText(themes.get(i).getName());
viewHolder.price.setText(themes.get(i).getPrice());
}
@Override
public int getItemCount() {
return themes.size();
}
}
问题似乎出在getItemCount()
方法上。当我尝试返回themes.size()
时,应用程序崩溃了。相反,当我return 0
时,什么也不显示。这里似乎是什么问题?我是android新手,所以请正确解释。
答案 0 :(得分:1)
您想用null
方法检查数据是否为getItemCount()
,因此可以确保您的应用程序永不崩溃:
@Override
public int getItemCount() {
return themes != null ? themes.size() : 0;
}
答案 1 :(得分:0)
我发现了问题。这是罪魁祸首viewHolder.price.setText(themes.get(i).getPrice());
,我正在调用TextView的setText()
方法并传递一个int
值,这就是它引发ResourceNotFound
异常的原因。我已经通过致电Integer.toString()
谢谢大家来解决此问题。
答案 2 :(得分:0)
我认为也许您必须初始化ArrayList。
您可以这样初始化:
ArrayList<Theme> themes = new ArrayList<Theme>();
我不确定100%。 但是尝试一下。