为了账号安全,请及时绑定邮箱和手机立即绑定

我在 Recyclerview 中显示来自 firebase 的图像时遇到问题

我在 Recyclerview 中显示来自 firebase 的图像时遇到问题

慕姐8265434 2023-06-28 16:14:57
我想在 Recyclerview 中显示我从 firebase 存储上传的图像。这是我的 ImagesShowingNotices.java 类private RecyclerView mRecyclerView;private ImageAdapter mAdapter;private ProgressBar mProgressCircle;private DatabaseReference mDatabaseRef;private List<Uplaodfiles> mUploads;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_image_showing_notices);    mRecyclerView = findViewById(R.id.recyclerviewitems);    mRecyclerView.setHasFixedSize(true);    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));    mProgressCircle = findViewById(R.id.progress_circle);    mUploads = new ArrayList<>();    mDatabaseRef = FirebaseDatabase.getInstance().getReference("Uploads");    mDatabaseRef.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(DataSnapshot dataSnapshot) {            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {                Uplaodfiles upload = postSnapshot.getValue(Uplaodfiles.class);                mUploads.add(upload);            }            mAdapter = new ImageAdapter(ImageShowingNotices.this, mUploads);            mRecyclerView.setAdapter(mAdapter);            mProgressCircle.setVisibility(View.INVISIBLE);        }        @Override        public void onCancelled(DatabaseError databaseError) {            Toast.makeText(ImageShowingNotices.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();            mProgressCircle.setVisibility(View.INVISIBLE);        }    });}@Overrideprotected void onStart() {    super.onStart();}这是我的 UploadFiles.java 类public Uplaodfiles() {    //empty constructor needed}public Uplaodfiles(String name, String imageUrl) {    if (name.trim().equals("")) {        name = "No Name";    }    mName = name;    mImageUrl = imageUrl;}public String getName() {    return mName;}public void setName(String name) {    mName = name;}Logcat 显示“未连接适配器;跳过布局”。我已经尝试了 StackOverflow 上发布的有关此问题的其他解决方案,但没有任何效果。请帮助我摆脱这种困境。
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

发布数据库结构图 您可能引用了错误的节点



查看完整回答
反对 回复 2023-06-28
?
HUX布斯

TA贡献1876条经验 获得超6个赞

我认为回调中的onDataChanged方法未正确调用。

检查实时数据库节点结构并检查 logcat警告级别以获取 firebase 实时数据库警告。

也许访问规则或任何其他问题都会导致您的 IO 失败。

另外,数据更改时重新创建适配器并不是一个好的解决方案。

在生命周期之初将适配器设置为 RecyclerView 一次。

您只需更改 Adapter 的数据并使用 Adapter 调用notificationDatasetChanged即可。

首先使用虚拟数据测试您的 RecyclerView。


查看完整回答
反对 回复 2023-06-28
  • 2 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信