gpt4 book ai didi

java - android studio 尝试在空对象引用上调用虚拟方法 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)'

转载 作者:行者123 更新时间:2023-12-02 10:05:14 29 4
gpt4 key购买 nike

当我尝试运行我的代码时,它给我一个错误,说我正在尝试对空对象引用尝试 RecyclerView。 android studio检测到的问题在这一行 recyclerView.setHasFixedSize(true); 。有人知道问题所在吗?

这是 Activity :

public class SalesHistoryActivity extends AppCompatActivity {

@BindView(R.id.sales_recycler)
RecyclerView recyclerView;

SalesAdapter adapter;
List<Sales> salesList;
Sales sales;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sales_history);


salesList = new ArrayList<>();
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new SalesAdapter(this, salesList);
recyclerView.setAdapter(adapter);

loadItem();

}

这是适配器

public class SalesAdapter extends RecyclerView.Adapter<SalesAdapter.ItemViewHolder> {

private Context mCtx;
private List<Sales> salesList;

public SalesAdapter(Context mCtx, List<Sales> salesList){
this.mCtx = mCtx;
this.salesList = salesList;
}

@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View rootView = LayoutInflater.from(mCtx).inflate(R.layout.list_sales, null, false);
RecyclerView.LayoutParams layoutParams = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
rootView.setLayoutParams(layoutParams);
return new ItemViewHolder(rootView);
}

@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {

final Sales sales =salesList.get(position);

holder.tvDate.setText(sales.getDate());
holder.tvType.setText(sales.getType());
holder.tvQty.setText(sales.getQty());
holder.tvPrice.setText(mCtx.getString(R.string.price, sales.getPrice()));

}

@Override
public int getItemCount() {
return salesList.size();
}

public class ItemViewHolder extends RecyclerView.ViewHolder {

TextView tvDate, tvType, tvQty, tvPrice;
public ItemViewHolder(@NonNull View itemView) {
super(itemView);
}
}
}

最佳答案

这只是因为您在使用 ButterKnife 库时忘记绑定(bind) View 。因此,您需要通过添加 ButterKnife.bind(this) 来更改代码:

public class SalesHistoryActivity extends AppCompatActivity {

@BindView(R.id.sales_recycler)
RecyclerView recyclerView;

..

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sales_history);

ButterKnife.bind(this);

// now your views are binded. You can access them

...

recyclerView.setHasFixedSize(true);

...

}

}

关于java - android studio 尝试在空对象引用上调用虚拟方法 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55376635/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com