当前位置: 首页 > 知识库问答 >
问题:

Firestore数据未显示在回收器视图中

殷宇
2023-03-14

我正试图添加数据在我的回收视图从火炉。我有带名字的文件(级别级别编号)但没有显示我的活动这是代码:

主要活动水平:

公共类级别活动扩展AppCompat活动{

// Recycler View object
RecyclerView recyclerView;

// Array list for recycler view data source
public static List<String> levelList = new ArrayList<>();

// Layout Manager
RecyclerView.LayoutManager RecyclerViewLayoutManager;

// adapter class object
LevelAdapter adapter;

// Linear Layout Manager
LinearLayoutManager HorizontalLayout;

FirebaseFirestore firebaseFirestore;

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


    // initialisation with id's
    recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    RecyclerViewLayoutManager = new LinearLayoutManager(getApplicationContext());

    // Set LayoutManager on Recycler View
    recyclerView.setLayoutManager(RecyclerViewLayoutManager);

    firebaseFirestore = FirebaseFirestore.getInstance();

    loadLevel();
    // calling constructor of adapter
    // with source list as a parameter
    adapter = new LevelAdapter(levelList);

    // Set Horizontal Layout Manager
    // for Recycler view
    HorizontalLayout = new LinearLayoutManager(LevelActivity.this, LinearLayoutManager.HORIZONTAL, false);
    recyclerView.setLayoutManager(HorizontalLayout);

    // Set adapter on recycler view
    recyclerView.setAdapter(adapter);
}

private void loadLevel(){
    levelList.clear();

    firebaseFirestore.collection("QUIZ LEVELS")
            .document("TOTAL_LEVELS").get()
            .addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    DocumentSnapshot doc = task.getResult();
                    if (doc.exists()) {
                        long levelCount = (long) doc.get("count");

                        for (int i = 1; i <= levelCount; i++) {
                            String levelName = doc.getString("LEVEL" + i);
                            levelList.add(levelName);
                        }

                    }else{
                        Toast.makeText(LevelActivity.this, "no level", Toast.LENGTH_SHORT).show();
                    }

                }else{

                    Toast.makeText(LevelActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
}

}

水平调整器

公共类级别适配器扩展了RecyclerView。适配器

// List with String type
private final List<String> levelList;

// View Holder class which
// extends RecyclerView.ViewHolder
public class MyView extends RecyclerView.ViewHolder {
    // Text View
    TextView textView;

    // parameterised constructor for View Holder class
    // which takes the view as a parameter
    public MyView(View view) {
        super(view);
        // initialise TextView with id
        textView = (TextView) view.findViewById(R.id.textview);
    }
}

// Constructor for adapter class
// which takes a list of String type
public LevelAdapter(List<String> horizontalList) {
    this.levelList = horizontalList;
}

// Override onCreateViewHolder which deals
// with the inflation of the card layout
// as an item for the RecyclerView.
@Override
public MyView onCreateViewHolder(ViewGroup parent, int viewType) {
    // Inflate item.xml using LayoutInflator
    View itemView
            = LayoutInflater
            .from(parent.getContext())
            .inflate(R.layout.recycler_view_item,
                    parent, false);

    // return itemView
    return new MyView(itemView);
}

// Override onBindViewHolder which deals
// with the setting of different data
// and methods related to clicks on
// particular items of the RecyclerView.
@Override
public void onBindViewHolder(final MyView holder, final int position) {
    // Set the text of each item of
    // Recycler view with the list items
    holder.textView.setText(levelList.get(position));
}

// Override getItemCount which Returns
// the length of the RecyclerView.
@Override
public int getItemCount() {
    return levelList.size();
}

}

共有1个答案

邴俊民
2023-03-14

从firestore/firebase加载数据需要一段时间。在收到文档的响应后,应该在加载级别内调用set adapter

 RecyclerView recyclerView;

 // Array list for recycler view data source
 public static List<String> levelList = new ArrayList<>();

// Layout Manager
RecyclerView.LayoutManager RecyclerViewLayoutManager;

// adapter class object
LevelAdapter adapter;

// Linear Layout Manager
LinearLayoutManager HorizontalLayout;

FirebaseFirestore firebaseFirestore;

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


// initialisation with id's
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
RecyclerViewLayoutManager = new 
LinearLayoutManager(getApplicationContext());

// Set LayoutManager on Recycler View
recyclerView.setLayoutManager(RecyclerViewLayoutManager);

firebaseFirestore = FirebaseFirestore.getInstance();

 HorizontalLayout = new LinearLayoutManager(LevelActivity.this, 
LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(HorizontalLayout);

 loadLevel();




 }

private void loadLevel(){
levelList.clear();

     firebaseFirestore.collection("QUIZ LEVELS")
        .document("TOTAL_LEVELS").get()
        .addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                DocumentSnapshot doc = task.getResult();
                if (doc.exists()) {
                    long levelCount = (long) doc.get("count");

                    for (int i = 1; i <= levelCount; i++) {
                        String levelName = doc.getString("LEVEL" + i);
                        levelList.add(levelName);
                    }
                  //Set Adapter here
                  adapter = new LevelAdapter(levelList);




                 // Set adapter on recycler view
                 recyclerView.setAdapter(adapter);

                }else{
                    Toast.makeText(LevelActivity.this, "no level", 
 Toast.LENGTH_SHORT).show();
                }

            }else{

                Toast.makeText(LevelActivity.this, 
 task.getException().getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
}
 类似资料:
  • 当我按下后退按钮时,这个ShoppingActivity会被破坏,当我再次访问该activity时,我发现我的回收器视图项目被替换了两次。我该如何解决这个问题? ShoppingActivity.java这里编写的所有代码和volley类也在这里调用,当我按下后退键并再次访问该活动时,我发现我的回收器视图项被替换了 @override protected void onCreate(Bundle

  • 我正在制作一个应用程序,其中有回收器视图。但我无法在我的应用程序中看到回收器视图。当我检查Logcat时,它显示'e/recyclerview:No adapter attached;正在跳过布局‘。为什么会发生这种情况,我该如何修复? 我的主要活动代码: 我的适配器(PostAdapter.java)类代码:

  • 我刚开始在firebase工作。我设法上传了文本和图像,但是,我无法检索要显示在回收器视图中的图像,只能检索文本。我用的是毕加索依赖。我已经包括了我的主要活动。java类,该类负责显示从问题“我的适配器”中的firebase检索的回收器视图项。java类和模型类。我相信,在我将图像URI上载到firebase存储时,我可能犯了没有存储图像URI的错误,因此适配器无法检索图像位置。我想这可能是因为我

  • 在我的应用程序中,我使用了一个回收器视图,它包含了许多项目,我想在项目之间显示一个点分隔线(分隔符),但它不起作用。我尝试创建一个可绘制的形状,但在添加DividerItemDecurity之后,在回收器视图项之间没有显示空间或线条。我也尝试过创建自定义DividerItemDecoration类,但对我来说都不起作用。注意:目前在我的可绘制形状被设置为矩形,我也尝试了线条。如何实现。任何帮助都将

  • 我需要制作一个电子商务应用程序类型的屏幕,具有多个viewpager和recycler视图。 我实现了它,但我的1/2视图寻呼机在回收器视图中可见,一旦我旋转设备,我的第一个视图寻呼机也会消失。 我的活动: 我的视图寻呼机片段: 我的回收器视图的主适配器: 我的视图寻呼机适配器: 我的水平回收器视图适配器: 主要活动布局: 水平滚动布局: 查看寻呼机布局: 根据我的JSON数据,在recycler

  • 当我尝试将Image URL解析到ImageView中时,回收器视图不显示,活动为空。我正在使用Picasso将图像加载到适配器类中的onBinfViewHolder方法中。这是相关代码 代表: } RepRvAdapter: } 解析JSON数据的方法: 现在,我有一行解析图像URL的代码被注释掉了。行取消注释后,活动将不再显示。如何获取要在ImageView中解析和显示的图像url?我认为这可