我有以下問題,其中我的應用程序在進入下一個活動時不幸停止。這是罪魁禍首: 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
提交
取消