Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将适配器设置为回收器视图时出现空指针异常_Java_Android_Firebase_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

Java 将适配器设置为回收器视图时出现空指针异常

Java 将适配器设置为回收器视图时出现空指针异常,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,无法成功呈现回收器视图。获取错误: “java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)'” 即使我已经初始化了RecyclerView,也要设置线性布局并将其设置为适配器。有人能指出错误吗 @Override protected void onCre

无法成功呈现回收器视图。获取错误:

“java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)'”

即使我已经初始化了
RecyclerView
,也要设置线性布局并将其设置为适配器。有人能指出错误吗

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

    toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    searchBar = (MaterialSearchBar) findViewById(R.id.searchBar);

    if(getIntent() != null ){
        if(getIntent().getStringExtra("categoryId") != null){
            categoryId = getIntent().getStringExtra("categoryId");
            fetchFoodList(categoryId);
        }
    }
    databaseReference = FirebaseDatabase.getInstance().getReference("foodlist");
    floatingActionButton = findViewById(R.id.food_list_fab);
    recyclerView = findViewById(R.id.food_recycler_view);

    final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

}

private void fetchFoodList(String categoryId) {
    Query query = FirebaseDatabase.getInstance().getReference("foodlist").orderByChild("MenuId").equalTo(categoryId);
    FirebaseRecyclerOptions<FoodModel> options = new FirebaseRecyclerOptions.Builder<FoodModel>().setQuery(query, new SnapshotParser<FoodModel>() {
        @NonNull
        @Override
        public FoodModel parseSnapshot(@NonNull DataSnapshot snapshot) {
            Log.d(TAG, "parseSnapshot: "+snapshot.child("Discount").getValue().toString());

            return new FoodModel(snapshot.child("Description").getValue().toString(), snapshot.child("Discount").getValue().toString(), snapshot.child("Image").getValue().toString(), snapshot.child("MenuId").getValue().toString(), snapshot.child("Name").getValue().toString(), snapshot.child("Price").getValue().toString());
        }
    }).build();

    FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<FoodModel, FoodViewHolder>(options) {
        @NonNull
        @Override
        public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
            View v = inflater.inflate(R.layout.food_items, viewGroup, false);
            return new FoodViewHolder(v);
        }

        @Override
        protected void onBindViewHolder(@NonNull FoodViewHolder holder, final int position, @NonNull FoodModel model) {
            holder.setFoodName(model.getName());
            Log.d(TAG, "onBindViewHolder: "+model.getImage());
            holder.setFoodImage(model.getImage());
            holder.setFoodDescription(model.getDescription());
        }
    };

    recyclerView.setAdapter(firebaseRecyclerAdapter);
}
@覆盖
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u food\u list);
toolbar=findviewbyd(R.id.toolbar);
设置支持操作栏(工具栏);
searchBar=(MaterialSearchBar)findViewById(R.id.searchBar);
如果(getIntent()!=null){
如果(getIntent().getStringExtra(“categoryId”)!=null){
categoryId=getIntent().getStringExtra(“categoryId”);
fetchFoodList(categoryId);
}
}
databaseReference=FirebaseDatabase.getInstance().getReference(“foodlist”);
floatingActionButton=findViewById(R.id.food\u list\u fab);
recyclerView=findViewById(R.id.food\u Recyclers\u视图);
最终LinearLayoutManager layoutManager=新的LinearLayoutManager(本);
recyclerView.setLayoutManager(layoutManager);
}
私有void fetchFoodList(字符串类别ID){
Query Query=FirebaseDatabase.getInstance().getReference(“foodlist”).orderByChild(“MenuId”).equalTo(categoryId);
FirebaseRecyclerOptions选项=新建FirebaseRecyclerOptions.Builder().setQuery(查询,新建快照解析器(){
@非空
@凌驾
public FoodModel parseSnapshot(@NonNull DataSnapshot snapshot){
Log.d(标记“parseSnapshot:+snapshot.child(“折扣”).getValue().toString());
返回新的FoodModel(snapshot.child(“Description”).getValue().toString(),snapshot.child(“折扣”).getValue().toString(),snapshot.child(“Image”).getValue().toString(),snapshot.child(“MenuId”).getValue().toString(),snapshot.child(“Price”).getValue().toString();
}
}).build();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(选项){
@非空
@凌驾
public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
LayoutInflater充气器=LayoutInflater.from(viewGroup.getContext());
视图v=充气机。充气(R.layout.food_items,视图组,false);
返回新的FoodViewWolder(v);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull FoodViewHolder,最终int位置,@NonNull FoodModel模型){
setFoodName(model.getName());
d(标记“onBindViewHolder:”+model.getImage());
setFoodImage(model.getImage());
setFoodDescription(model.getDescription());
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
}

要解决此问题,请移动以下代码行:

recyclerView = findViewById(R.id.food_recycler_view);
就在这一行之后:

searchBar = (MaterialSearchBar) findViewById(R.id.searchBar);.

通过这种方式,
RecyclerView
对象将在使用它之前初始化。

我太傻了。..thnx buddy:)