java - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TableRow.addView(android.view.View)”
问题描述
我正在尝试将表格布局与 recyclerView 一起使用,但它给出了错误:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TableRow.addView(android.view.View)' on an null object reference。
有我的适配器类:
public class CompanyAdapter extends RecyclerView.Adapter<CompanyAdapter.bookViewHolder> {
ArrayList<DataClass> arrayList;
TextView deposit;
TextView purchase;
TextView date;
TableRow tableRow;
TableLayout tableLayout;
public CompanyAdapter(ArrayList<DataClass> arrayList){
this.arrayList = arrayList;
}
@Override
public bookViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
View view =
LayoutInflater.
from(context).inflate(R.layout.company_list_item,parent,false);
return new bookViewHolder(view);
}
@Override
public void onBindViewHolder(bookViewHolder holder, int position) {
DataClass dataClass = arrayList.get(position);
holder.bind(dataClass);
//bookNameTV.setText(dataClass.getBook());
//authorNameTV.setText(dataClass.getAuthor());
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class bookViewHolder extends RecyclerView.ViewHolder{
public bookViewHolder(View itemView) {
super(itemView);
deposit = (TextView) itemView.findViewById(R.id.deposit);
purchase = (TextView) itemView.findViewById(R.id.purchase);
date = (TextView) itemView.findViewById(R.id.date);
tableLayout = (TableLayout)
itemView.findViewById(R.id.maintablelayout);
}
public void bind(DataClass dataClass){
deposit.setText(Integer.toString(dataClass.getAmount()));
purchase.setText(Integer.toString(dataClass.getAmount()));
date.setText(dataClass.date);
tableRow.addView(deposit);
tableRow.addView(purchase);
tableRow.addView(date);
tableLayout.addView(tableRow, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));// giving error
}
}
}
还有一个问题,有没有更好的方法在不使用任何库的情况下将 tableLayout 与 recycler View 一起使用?
谢谢..!
解决方案
TableRow
是一个实例变量,因此 JAVA 将在运行时将其初始化为 null 值,并且您不能调用任何具有 null 值的方法。您必须将对象分配给TableRow
引用变量。
喜欢:
tableRow=new TableRow(context);
推荐阅读
- python - tkinter GUI 仅在鼠标移动之前部分更新
- reactjs - 隐藏/显示在基于条件reactjs的更新期间
- google-cloud-platform - reCAPTCHA Enterprise 的特定 Google OAuth 范围
- reactjs - 如何安全地为 Github Pages 使用 MailChimp 表单?
- javascript - 谷歌翻译中断导航链接
- usb - 树莓派仅显示插入的第一个 USB 记忆棒,而在文件资源管理器中不显示其他 USB 记忆棒
- windows - vcpkg 不会检测到 Visual Studio
- javascript - 如何使用 Safari(或其他工具)在 Ionic App WKWebView 中查看 javascript 控制台日志
- javascript - 组件中的功能未执行
- python - 如何将 Prolog 文件的输出显示到 Python QDialog 文本区域?