我有以下问题,其中我的应用程序在进入下一个活动时不幸停止。这是罪魁祸首: 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 新手,所以请正确解释。
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
你想检查你的数据是否null在getItemCount()方法中,这样你就可以确保你的应用程序永远不会在那里崩溃:
爪哇:
@Override
public int getItemCount() {
return themes != null ? themes.size() : 0;
}
科特林:
override fun getItemCount(): Int = themes?.size ?: 0
慕勒3428872
TA贡献1848条经验 获得超6个赞
我找到了问题所在。这里的这个是viewHolder.price.setText(themes.get(i).getPrice());我调用setText()TextView 方法并传入一个int值的罪魁祸首,这就是它抛出ResourceNotFound异常的原因。我已经通过打电话Integer.toString()感谢大家修复了它。
狐的传说
TA贡献1804条经验 获得超3个赞
我想也许你必须初始化你的 ArrayList。
你可以这样初始化:
ArrayList<Theme> themes = new ArrayList<Theme>();
我不是 100% 确定。但试试吧。
添加回答
举报
0/150
提交
取消
