【问题标题】:E/RecyclerView: No adapter attached; skipping layout Error 17E/RecyclerView:没有附加适配器;跳过布局错误 17
【发布时间】:2019-04-13 21:37:33
【问题描述】:

不断收到以下错误:

E/RecyclerView: No adapter attached; skipping layout. 

正如您在下面看到的,我设置了适配器,但在 OnDataChange() 方法中我认为这可能是问题,因为它需要在 OnCreate() 方法中,但我似乎无法修复它。

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

        RecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        RecyclerView.setHasFixedSize(true);
        RecyclerView.setLayoutManager(new LinearLayoutManager(this));

    ProgressCircle = findViewById(R.id.progress_circle);

    mUploads = new ArrayList<>();

    DatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");

    DatabaseRef.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                UploadClass upload = 
       postSnapshot.getValue(UploadClass.class);
                mUploads.add(upload);
            }
            Adapter = new ImageAdapter(JudgeActivity.this, mUploads);
            ProgressCircle.setVisibility(View.INVISIBLE);
            RecyclerView.setAdapter(Adapter);
         }

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。 2) 曾经只需要源代码中的一个空白行。 { 之后或} 之前的空行通常也是多余的。 3) 使用逻辑一致的形式缩进代码行和块。缩进是为了让代码的流程更容易理解!

标签: java android android-studio android-recyclerview adapter


【解决方案1】:

您设置了适配器,但为时已晚。视图加载时没有适配器,因为您正在等待 Firebase。

理想情况下,您应该最初设置适配器,因此请删除构造函数中的 mUploads 参数。

@Override
protected void onCreate(Bundle savedInstanceState) {
    recyclerView = (RecyclerView) find...
    recyclerView.setAdapter(new ImageAdapter(this));
    ...
}

最初适配器没有数据 - 但 RecyclerView 将有一个适配器解决您的问题。

您可以稍后设置数据,如果您存储适配器的实例,您可以简单地:

adapter.setUploads(mUploads)

在您的 Firebase 通话中。

【讨论】:

  • 感谢您的帮助!我只是想知道 .setUploads() 来自哪里?还有你所说的 Firebase 调用是什么意思?
  • setUploads 是一个你应该写的函数,我只是使用了一个通用的命名约定。该函数应该在适配器中设置上传。 firebase 调用是 onDataChange 方法
  • 我进行了这些更改,但仍然出现同样的错误?
猜你喜欢
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多