未连接适配器,已跳过布局

问题描述 投票:0回答:1

我的Java logcat出现此错误:E / RecyclerView:未连接适配器;跳过布局。我在网上尝试了所有解决方案,但无济于事。当我单击recyclerview(列表项)中的按钮时,将出现此错误,并且我的标题不会根据数据库设置而更改。我的数据库工作正常。有人可以帮我弄这个吗?我需要在五天内完成。您的帮助将不胜感激。

public class contactsPage extends AppCompatActivity {

    RecyclerView recyclerView;
    AdapterUsers adapterUsers;
    DatabaseReference ref;
    FirebaseDatabase database;
    List<ModelUser>userList;

    FirebaseAuth firebaseAuth;

    private void checkUserStatus() {
        //get current user
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if (user != null) {
        }
        else {
            startActivity(new Intent(this, login.class));
            finish();
        }
    }


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

        recyclerView = findViewById(R.id.recyclerview);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);


        //init user list
        userList = new ArrayList<>();

        //getall user
        getAllUsers();
    }

    private void getAllUsers () {
        //get current user
        final FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
        //get path of database named users
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
        //get all data from path
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                userList.clear();
                for (DataSnapshot ds : dataSnapshot.getChildren()) {
                    ModelUser modelUser = ds.getValue(ModelUser.class);

                    //get all users except currently signed in user
                    if (!modelUser.getEmail().equals(fUser.getEmail())) {
                        userList.add(modelUser);
                    }
                    //adapter
                    adapterUsers = new AdapterUsers(contactsPage.this, userList);
                    //set adapter to recycler view
                    recyclerView.setAdapter(adapterUsers);
                }

            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
    }
}
java firebase-realtime-database layout android-recyclerview recycler-adapter
1个回答
0
投票

尝试在for循环外编写适配器代码。

                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    userList.clear();
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        ModelUser modelUser = ds.getValue(ModelUser.class);

                        //get all users except currently signed in user
                        if (!modelUser.getEmail().equals(fUser.getEmail())) {
                            userList.add(modelUser);
                        }
                    }
                    //adapter
                    adapterUsers = new AdapterUsers(contactsPage.this, userList);
                    //set adapter to recycler view
                    recyclerView.setAdapter(adapterUsers);

                }
© www.soinside.com 2019 - 2024. All rights reserved.