Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 我能';t在recyclerView上显示来自firebase实时数据库的数据_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 我能';t在recyclerView上显示来自firebase实时数据库的数据

Java 我能';t在recyclerView上显示来自firebase实时数据库的数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想使用recyclerView显示firebase数据库中的数据。一切正常,奇怪的是我没有错误,但是应该有列表的活动是空白的 下面是数据应该加载到类中的位置: public class Categories_Medicaments extends AppCompatActivity { private RecyclerView categorieRv; private LinearLayoutManager layoutManager; FirebaseDatabase data

我想使用recyclerView显示firebase数据库中的数据。一切正常,奇怪的是我没有错误,但是应该有列表的活动是空白的

下面是数据应该加载到类中的位置:

 public class Categories_Medicaments extends AppCompatActivity {
  private RecyclerView categorieRv;
  private LinearLayoutManager layoutManager;
  FirebaseDatabase database;
  DatabaseReference category;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_categories__medicaments);
        if (android.os.Build.VERSION.SDK_INT > 9)
        {
            StrictMode.ThreadPolicy policy = new
                    StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        categorieRv = (RecyclerView)findViewById(R.id.categories_RV);
        categorieRv.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        categorieRv.setLayoutManager(layoutManager);

        database = FirebaseDatabase.getInstance();
        category = database.getReference("categories");
       loadMenu();
    }

    private void loadMenu() {

        FirebaseRecyclerOptions<Categorie> options =
                new FirebaseRecyclerOptions.Builder<Categorie>()
                        .setQuery(category, Categorie.class)
                        .build();
        FirebaseRecyclerAdapter<Categorie,MenuViewHolder> adapter = new FirebaseRecyclerAdapter<Categorie,MenuViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull MenuViewHolder holder, int position, @NonNull Categorie model) {
                holder.txtMenuName.setText(model.getNom());
                Categorie clickItem  = model;
                holder.setItemClickListener((view, position1, isLongClick) -> Toast.makeText(Categories_Medicaments.this,""+clickItem.getNom(),Toast.LENGTH_SHORT).show());

            }

            @NonNull
            @Override
            public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                return null;
            }
        };
        categorieRv.setAdapter(adapter);

    }

}
这是分类课:

public class Categorie {
private String Nom;


public Categorie(String nom) {
    Nom = nom;
}

public String getNom() {
    return Nom;
}

public void setNom(String nom) {
    Nom = nom;
}
}
有人能帮我吗?我需要尽快完成,因为这是我最后一年的项目 多谢各位

编辑:

我的代码有点变化

public class Categories_Medicaments extends AppCompatActivity {
private RecyclerView categorieRv;
private LinearLayoutManager layoutManager;
FirebaseDatabase database;
DatabaseReference category;
FirebaseRecyclerAdapter<Categorie, MenuViewHolder> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_categories__medicaments);
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new
                StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    categorieRv = (RecyclerView) findViewById(R.id.categories_RV);
    categorieRv.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    categorieRv.setLayoutManager(layoutManager);


    database = FirebaseDatabase.getInstance();
    category = database.getReference("categories");
    Log.e("Categories_Medicament", "Outside loadmenu");
    loadMenu();
}

private void loadMenu() {
    Log.e("Categories_Medicament", "Inside loadmenu");

    FirebaseRecyclerOptions<Categorie> options =
            new FirebaseRecyclerOptions.Builder<Categorie>()
                    .setQuery(category, Categorie.class)
                    .build();
    Log.e("Categories_Medicament", "After Options");
     adapter = new FirebaseRecyclerAdapter<Categorie, MenuViewHolder>(options) {

        @NonNull
        @Override
        public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            Log.e("Categories_Medicament", "Inside MenuView");
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.categorie_item, parent, false);
            return new MenuViewHolder(view);
        }


        @Override
        protected void onBindViewHolder(@NonNull MenuViewHolder holder, int position, @NonNull Categorie model) {
            Log.e("Categories_Medicament", "Inside onBind");

            final Categorie clickItem = model;
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void OnClick(View view, int position, boolean isLongClick) {

                }

               /*@Override
                public void onClick(View view, int position, boolean isLongClick) {
                    // Toast.makeText(home.this, "" + clickItem.getName(), Toast.LENGTH_SHORT).show();I
                    Intent clothDetail = new Intent(Categories_Medicaments.this,ClothesDetail.class);
                    clothDetail.putExtra("ClothId",adapter.getRef(position).getKey());
                    startActivity(clothDetail);
                } */
            });
        }
    };
    categorieRv.setAdapter(adapter);
    adapter.startListening();
    adapter.notifyDataSetChanged();
    Log.e("Categories_Medicament", "last laodmenu");

    }

    @Override
    protected void onStart() {
        Log.e("Categories_Medicament", "Inside onStart");
        super.onStart();
        loadMenu();
        adapter.startListening();

}
public class Categories\u药物扩展应用程序活动{
私人回收视图分类;
私人专线经理;布局经理;
Firebase数据库;
数据库参考类别;
FirebaseRecyclerAdapter适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u categories\u药物);
如果(android.os.Build.VERSION.SDK_INT>9){
StrictMode.ThreadPolicy策略=新建
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
}
CategorieV=(RecyclerView)findViewById(R.id.categories_RV);
categorieRv.setHasFixedSize(真);
layoutManager=新的LinearLayoutManager(此);
分类设置布局管理器(布局管理器);
database=FirebaseDatabase.getInstance();
category=database.getReference(“categories”);
Log.e(“类别药物”、“外部装载菜单”);
loadMenu();
}
私有void加载菜单(){
Log.e(“药品类别”、“内部装载菜单”);
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(类别,分类.class)
.build();
Log.e(“药物类别”、“期权之后”);
适配器=新的FirebaseRecyclerAdapter(选项){
@非空
@凌驾
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
Log.e(“药品类别”、“菜单视图内部”);
View=LayoutFlater.from(parent.getContext()).flate(R.layout.categie_项,parent,false);
返回新的MenuViewHolder(视图);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull MenuViewHolder holder,int position,@NonNull Categorie model){
Log.e(“药品类别”、“内部约束”);
最终分类clickItem=模型;
setItemClickListener(新的ItemClickListener(){
@凌驾
公共void OnClick(视图、int位置、布尔值isLongClick){
}
/*@凌驾
公共void onClick(视图、int位置、布尔值isLongClick){
//Toast.makeText(home.this,“+clickItem.getName(),Toast.LENGTH_SHORT.show();I
Intent COUNTHDETAIL=新Intent(类别_MEDICATIONS.this,ClothesDetail.class);
clothDetail.putExtra(“ClothId”,adapter.getRef(position.getKey());
星触觉(细节);
} */
});
}
};
分类设置适配器(适配器);
adapter.startListening();
adapter.notifyDataSetChanged();
Log.e(“药物类别”、“最后一个老挝菜单”);
}
@凌驾
受保护的void onStart(){
Log.e(“药品类别”、“内部启动”);
super.onStart();
loadMenu();
adapter.startListening();
}
}


而且仍然无法在
RecyclerView

上获得任何数据,这可能有很多原因,但我将针对从提供的信息中可以看到的内容

您忘记了通过在
onCreateViewHolder()
中提供列表项布局来构建适配器列表,因此需要膨胀此布局并返回自定义ViewHolder
MenuViewHolder
的新实例,如下所示

@NonNull
@Override
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.row_item, parent, false);
    return new MenuViewHolder(view);
}
注意:这里我假设您的项目布局被称为
row\u item.xml

更新

在将适配器设置为
RecyclerView

现在将您的
loadMenu()
更改为:

private void loadMenu() {
    Log.e("Categories_Medicament", "Inside loadmenu");

    FirebaseRecyclerOptions<Categorie> options =
            new FirebaseRecyclerOptions.Builder<Categorie>()
                    .setQuery(category, Categorie.class)
                    .build();
    Log.e("Categories_Medicament", "After Options");
     adapter = new FirebaseRecyclerAdapter<Categorie, MenuViewHolder>(options) {

        @NonNull
        @Override
        public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            Log.e("Categories_Medicament", "Inside MenuView");
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.categorie_item, parent, false);
            return new MenuViewHolder(view);
        }


        @Override
        protected void onBindViewHolder(@NonNull MenuViewHolder holder, int position, @NonNull Categorie model) {
            Log.e("Categories_Medicament", "Inside onBind");

            final Categorie clickItem = model;
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void OnClick(View view, int position, boolean isLongClick) {

                }

            });
        }
    };
    adapter.startListening();
    categorieRv.setAdapter(adapter);
    Log.e("Categories_Medicament", "last laodmenu");

 }
private void loadMenu(){
Log.e(“药品类别”、“内部装载菜单”);
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(类别,分类.class)
.build();
Log.e(“药物类别”、“期权之后”);
适配器=新的FirebaseRecyclerAdapter(选项){
@非空
@凌驾
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
Log.e(“药品类别”、“菜单视图内部”);
View=LayoutFlater.from(parent.getContext()).flate(R.layout.categie_项,parent,false);
返回新的MenuViewHolder(视图);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull MenuViewHolder holder,int position,@NonNull Categorie model){
Log.e(“药品类别”、“内部约束”);
最终分类clickItem=模型;
setItemClickListener(新的ItemClickListener(){
@凌驾
公共void OnClick(视图、int位置、布尔值isLongClick){
}
});
}
};
adapter.startListening();
分类设置适配器(适配器);
Log.e(“药物类别”、“最后一个老挝菜单”);
}

我在MenuViewHolder类中添加了此方法,但没有任何更改:(我陷入此错误已3年。)days@ayalihoum对于更新的答案,您删除了
onBindViewHolder()中的
holder.txtMenuName.setText(model.getNom());
method..plz请确保添加itI我确实很感谢您,虽然效果不错,但它只显示了我的第一个项目list@ay
private void loadMenu() {
    Log.e("Categories_Medicament", "Inside loadmenu");

    FirebaseRecyclerOptions<Categorie> options =
            new FirebaseRecyclerOptions.Builder<Categorie>()
                    .setQuery(category, Categorie.class)
                    .build();
    Log.e("Categories_Medicament", "After Options");
     adapter = new FirebaseRecyclerAdapter<Categorie, MenuViewHolder>(options) {

        @NonNull
        @Override
        public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            Log.e("Categories_Medicament", "Inside MenuView");
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.categorie_item, parent, false);
            return new MenuViewHolder(view);
        }


        @Override
        protected void onBindViewHolder(@NonNull MenuViewHolder holder, int position, @NonNull Categorie model) {
            Log.e("Categories_Medicament", "Inside onBind");

            final Categorie clickItem = model;
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void OnClick(View view, int position, boolean isLongClick) {

                }

            });
        }
    };
    adapter.startListening();
    categorieRv.setAdapter(adapter);
    Log.e("Categories_Medicament", "last laodmenu");

 }