Firebase:RecyclerView 跳过未连接适配器的布局

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

我是一个在 firebase java android 上工作的人。我的问题是我无法加载 recyclerView 它显示 adapter not attached Skipping layout 即使我已经连接了适配器仍然显示相同

下面是我的代码。

private RecyclerView bookList,listOrg,listcustom;

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

    mAuth = FirebaseAuth.getInstance();
    currentUserID = mAuth.getCurrentUser().getUid();

    MyCustomWorkRef = FirebaseDatabase.getInstance().getReference().child("WorksCustomAdded");
    
    bookList = findViewById(R.id.myCustomerList);
    listcustom = findViewById(R.id.myCustomerListCustom);

    bookList.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MyWorkEmployeeActivity.this);
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    bookList.setLayoutManager(linearLayoutManager);




    listcustom.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(MyWorkEmployeeActivity.this);
    linearLayoutManager2.setReverseLayout(true);
    linearLayoutManager2.setStackFromEnd(true);
    listcustom.setLayoutManager(linearLayoutManager2);


    //LoadDat();

    DisplayCustom("ltG284DWVbbxfHlD3vAiiwkEv963","22883b15-d432-42b7-8ba5-1b3d4586ff09");


   // DisplayCustom();

}

这是我的显示自定义功能

private void DisplayCustom(String cmpnyUID,String empId) {


    Toast.makeText(getApplicationContext(), "CompnUID : " + cmpnyUID + "\n  empID : "+empId, Toast.LENGTH_SHORT).show();
    Query SortPostsInDecendingOrder = MyCustomWorkRef.child(cmpnyUID).orderByChild("empID").equalTo(empId);;

    FirebaseRecyclerOptions<MyCustomer> options = new FirebaseRecyclerOptions.Builder<MyCustomer>()
            .setQuery(SortPostsInDecendingOrder, MyCustomer.class)
            .build();
    FirebaseRecyclerAdapter<MyCustomer, MyWorkEmployeeActivity.PBooksViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<MyCustomer, MyWorkEmployeeActivity.PBooksViewHolder>(options)
    {
        @NonNull
        @Override
        public MyWorkEmployeeActivity.PBooksViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
        {
            View view= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.viewwork_list_eng, viewGroup, false);
            MyWorkEmployeeActivity.PBooksViewHolder viewHolder =new MyWorkEmployeeActivity.PBooksViewHolder(view);
            return viewHolder;
        }

        @Override
        protected void onBindViewHolder(@NonNull MyWorkEmployeeActivity.PBooksViewHolder holder, int position, @NonNull MyCustomer model)
        {
            final String pos = getRef(position).getKey();
            String cmpnyID = model.getCmpnyID();
            String wrkID = model.getWrkSiteID();
            String engID = model.getEngKey();
            String usrID = model.getUsrkey();


       



            holder.bookname.setText(model.getUsrname());
            holder.count.setText("Work No: \n"+model.getCnt());


            holder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent reqIntent = new Intent(MyWorkEmployeeActivity.this, ViewCustomWrkActivity.class);
                    reqIntent.putExtra("wrkID", model.getWrkSiteID());
                    reqIntent.putExtra("usrkey","0");

                    startActivity(reqIntent);
                }
            });

        }
    };


    listcustom.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.startListening();


    }


    public class PBooksViewHolder extends RecyclerView.ViewHolder {

    TextView bookname, bookauthor,fees ,count;
    ImageView profImage;
    LinearLayout mView;
    String t_area, b_area, plan, allow;
    public PBooksViewHolder(@NonNull View itemView) {

        super(itemView);


        profImage = itemView.findViewById(R.id.ivRequestProfile);
        bookname = itemView.findViewById(R.id.tvRequestUserName);
        bookauthor = itemView.findViewById(R.id.tvWorksCompletedEngineerList);
        mView = itemView.findViewById(R.id.request_layout);
        fees =  itemView.findViewById(R.id.tvFeesEngineerList);

        count =  itemView.findViewById(R.id.wrkCount);


    }
}
java android firebase-realtime-database android-recyclerview firebaseui
1个回答
0
投票

我找到了这个问题的答案。在我的 xml 文件中,我一直在高度上使用

match_parent
。这导致主线程跳过布局,因为它找不到布局比例。

所以我将值更改为 dp 中的某个标准高度。例如:600dp。它正确定义了布局,所以现在 recyclerView 可以完美加载而不会跳过布局。

我的 XML 代码

`

   <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">


                    <androidx.recyclerview.widget.RecyclerView
                        android:id="@+id/myWorkListemp"

                        android:layout_width="match_parent"
                        android:layout_height="700dp"
                        android:layout_marginTop="15dp" />

                    <androidx.recyclerview.widget.RecyclerView
                        android:visibility="gone"

                        android:id="@+id/myCustomerListCustom"
                        android:layout_width="match_parent"
                        android:layout_height="700dp"
                        android:layout_marginTop="15dp" />

                </LinearLayout>

`

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