【发布时间】:2018-03-09 00:12:07
【问题描述】:
只是想在 RecyclerView 中显示我数据库中的信息。 一切正常。显示对象。
但是 logcat 说:
E/RecyclerView:没有附加适配器;跳过布局这是我的代码 (DisplayImages.java)
public class DisplayImages extends AppCompatActivity {
DatabaseReference databaseReference;
RecyclerView recyclerView;
RecyclerView.Adapter adapter;
ProgressDialog progressDialog;
List<ImageUploadInfo> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_images);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(DisplayImages.this));
progressDialog = new ProgressDialog(DisplayImages.this);
progressDialog.setMessage("Loading Images From Firebase.");
progressDialog.show();
// Setting up Firebase image upload folder path in databaseReference.
// The path is already defined in MainActivity.
databaseReference = FirebaseDatabase.getInstance().getReference(Main.Database_Path);
databaseReference.addValueEventListener(new ValueEventListener() {
@override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
ImageUploadInfo imageUploadInfo = postSnapshot.getValue(ImageUploadInfo.class);
list.add(imageUploadInfo);
}
adapter = new RecyclerViewAdapter(getApplicationContext(), list);
recyclerView.setAdapter(adapter);
progressDialog.dismiss();
}
@Override
public void onCancelled(DatabaseError databaseError) {
progressDialog.dismiss();
}
});
}
如果有什么不同,这就是我在 MainActivity 中写的关于 DataBase_Path 的内容:
public class Main extends AppCompatActivity implements View.OnClickListener {
DatabaseReference databaseReference;
public static final String Database_Path = "All_Image_Uploads_Database";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
databaseReference = FirebaseDatabase.getInstance().getReference(Database_Path);
如您所见,我为 Recycleview 附加了一个适配器。那为什么我总是收到这个错误?
我已阅读与同一问题相关的其他问题,但没有任何帮助。
【问题讨论】:
-
要获得警告,将设置适配器部分移到异步方法上方,并仅在异步方法中更新适配器的数据
-
@Anne 正如上面的评论所说,您应该在创建布局后将适配器的创建移到右侧。然后,您可以设置一个空列表,当您返回 firebase 时,您可以在适配器上更新列表和 notifyDatasetChanged()。我已经编辑了我的答案以更好地解释:)
标签: android c android-studio android-recyclerview