首页 > 解决方案 > 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 一起使用?
谢谢..!

标签: javaandroidandroid-recyclerviewnullpointerexceptionandroid-tablelayout

解决方案


TableRow是一个实例变量,因此 JAVA 将在运行时将其初始化为 null 值,并且您不能调用任何具有 null 值的方法。您必须将对象分配给TableRow引用变量。

喜欢:

tableRow=new TableRow(context); 

推荐阅读