首页 > 解决方案 > E/RecyclerView:没有附加适配器;使用 Firebase 数据创建回收站视图时跳过布局

问题描述

通过我的发现,我相信问题可能出在 getActivity() 上,但我一遍又一遍地遇到同样的错误。

我认为这一切都来自使用活动和片段。如果有人对此问题有任何建议,我将非常感谢您的帮助!

// Recycler View
private DatabaseReference mDatabase;
private FirebaseUser mUser;
private List<UserHabits> mUserHabitsList;
private RecyclerView mRecyclerView;
private String uID;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tab1_habits_fragment, container,false);

    // Recycler View
    mRecyclerView = view.findViewById(R.id.recycler_view_habits);
    //LinearLayoutManager manager = new LinearLayoutManager(getActivity());
    mRecyclerView.setHasFixedSize(true);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(container.getContext());
    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    prepareUserHabitsData();


    mUser = FirebaseAuth.getInstance().getCurrentUser();
    if (mUser != null) {
        uID = mUser.getUid();
        Log.i("USER ID", uID);
    }

    mDatabase = FirebaseDatabase.getInstance().getReference("users");

    return view;
}

private void prepareUserHabitsData() {
    new GetDataFromFirebase().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

    // Read From Database
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("users");

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            mUserHabitsList = new ArrayList<>();

            for (DataSnapshot habitsSnapshot: dataSnapshot.getChildren()) {
                String habitName = (String) habitsSnapshot.child("GbovxRp2QrW4wV1KSI8nfTjJwpW2").child("Test").getValue();

                UserHabits userHabits = new UserHabits(habitName);
                mUserHabitsList.add(userHabits);
            }
            mRecyclerView.setAdapter(new HabitsAdapter(mUserHabitsList));
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.i("ERROR", "FAILED TO READ VALUE");
        }
    });
}

标签: androidfirebaseandroid-fragmentsandroid-recyclerview

解决方案


推荐阅读