android - Context.getSystemService(java.lang.String) null
问题描述
当我单击 RecyclerView 时,我想在数据库中捕获房间的数据,但我遇到了问题。当我单击 RecyclerView 时如何捕获这些数据。我在 ArrayAdapter 部分收到此错误。
错误:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.Object android.content.Context.getSystemService(java.lang.String)”
public class ProductsNewAdapter extends RecyclerView.Adapter<ProductsNewAdapter.ProductViewHolder> {
Context mCtx;
private Spinner spinner;
List<String> Rooms = new ArrayList<String>();
public ProductsNewAdapter(Context mCtx, List<ProductNew> productList) {
this.mCtx = mCtx;
this.productList = productList;
}
@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mCtx).inflate(R.layout.product_laylout_new,
parent, false);
ProductViewHolder productViewHolder = new ProductViewHolder(view);
return productViewHolder;
}
int selectedPosition=-1;
@Override
public void onBindViewHolder(final ProductViewHolder holder, final int position) {
if(selectedPosition==position)
holder.itemView.setBackgroundColor(Color.parseColor("#25E9F9"));
else
holder.itemView.setBackgroundColor(Color.parseColor("#ffffff"));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
selectedPosition=position;
notifyDataSetChanged();
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
DatabaseReference refRooms = mDatabase.child("0").child("Rooms");
refRooms.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
spinner = (Spinner) v.findViewById(R.id.spinnerMain);
ViewGroup parent = null;
View view =
LayoutInflater.from(parent.getContext()).inflate(R.layout.product_laylout_new,
parent, false);
String data = snapshot.getValue(String.class);
Rooms.add(data);
// addListenerOnSpinnerItemSelection();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
解决方案
尝试这个,
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_laylout_new,
parent, false);
推荐阅读
- java - 如何将字符串 yyyy-MM-ssThh-mm-ss 转换为 LocalDataTime yyyy-MM-ss hh-mm-ss?
- next.js - 如何在 Next.js 中的 Link 之前添加一个空格?
- javascript - 如何从本地存储中删除以特定数字结尾的项目?
- tsql - 计算没有直接连接列的总和
- java - Java中的按钮/图像及其定位(android应用)问题
- join - 更好的结构查询以提高性能
- java - 仅使用直接调用运行 Jmeter 测试
- c# - 运行动态编译的 C# 代码时出错
- tfs - 如何从 TFS 获取 VS Code 中其他用户的更改
- ruby-on-rails - ActiveSupport::Duration 错误地计算间隔?