简体   繁体   English

RecyclerView.setAdapter(androidx.recyclerview.widget.RecyclerView 适配器适配器

[英]RecyclerView.setAdapter(androidx.recyclerview.widget.RecyclerView Adapter ADAPTER

Tried using recycler view inside recycler view the first adapter works fine but the second adapter never runs tired fixing it over and over nothing works....help The second recycler view is retrieving data from Firebase尝试在回收器视图中使用回收器视图,第一个适配器工作正常,但第二个适配器从不疲倦,一遍又一遍地修复它没有任何效果......帮助第二个回收器视图正在从 Firebase 检索数据

The Data from firebase is received but never set to the required text views.收到来自 firebase 的数据,但从未设置为所需的文本视图。


Activity活动


public class ScheduleOrder extends AppCompatActivity implements IFirebaseLoadListener {

    DeviceSession deviceSession;
    UserSession userSession;
    String Device_Id="",User_Id="";
    MyItemAdapter myItemAdapter;
    IFirebaseLoadListener iFirebaseLoadListener;
    List<String> Name;
    List<ItemData>itemData;
    ItemData itemData1;
    RecyclerView my_recycler_view;

    DatabaseReference myData;



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

        itemData1=new ItemData();
        deviceSession = new DeviceSession(getApplicationContext());
        Device_Id = deviceSession.getDeviceDetails();

        userSession = new UserSession(getApplicationContext());
        final HashMap<String, String> user = userSession.getUserDetails();
        User_Id = user.get(UserSession.User_Id);

        FloatingActionButton myFab = (FloatingActionButton)findViewById(R.id.schedule_add);
        myFab.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(),Schedule_Order.class);
                startActivity(i);
                finish();
            }
        });






        myData=FirebaseDatabase.getInstance().getReference("Cart_Schedule"+"/"+Device_Id);
        iFirebaseLoadListener=this;

        my_recycler_view=findViewById(R.id.my_recyclr_view);
        my_recycler_view.setHasFixedSize(true);
//        my_recycler_view1.setHasFixedSize(true);

        my_recycler_view.setLayoutManager(new LinearLayoutManager(this));
//        my_recycler_view1.setLayoutManager(new LinearLayoutManager(this));


        getFirebaseData();









    }

    private void getFirebaseData() {
        myData.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                List<ItemGroup>itemGroups=new ArrayList<>();

                Name=new ArrayList<>();
                for(DataSnapshot groupSnapShot:dataSnapshot.getChildren()){

                    ItemGroup itemGroup=new ItemGroup();

                    itemGroup.setD_Time(groupSnapShot.child("d_Time").getValue(true).toString());
                    itemGroup.setF_Amount(groupSnapShot.child("f_Amount").getValue(true).toString());

                    for(DataSnapshot newdatasnap:groupSnapShot.child("listItem").getChildren()){


                        itemData1.setA_Item_name(newdatasnap.child("a_Item_name").getValue().toString());
                        itemData1.setB_Quantity(newdatasnap.child("b_Quantity").getValue().toString());
                        itemData1.setC_Price(newdatasnap.child("b_Quantity").getValue().toString());
                        Name.add(newdatasnap.child("a_Item_name").getValue().toString());
                        Name.add(newdatasnap.child("c_Price").getValue().toString());
                        Name.add(newdatasnap.child("b_Quantity").getValue().toString());
                        Log.d("JADOO", "onDataChange: ??? "+itemData1.getA_Item_name());
                        Log.d("JADOO", "onDataChange: ??? "+itemData1.getB_Quantity());
                        Log.d("JADOO", "onDataChange: ??? "+itemData1.getC_Price());


                        Log.d("JADOO", "onDataChange: ??? "+Name);}


                    Log.d("JADOO", "onDataChange: ====================================================");

                    itemGroups.add(itemGroup);


                    Name.clear();
                }

                iFirebaseLoadListener.onFirebaseLoadSuccess(itemGroups);

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

                iFirebaseLoadListener.onFirebaseLoadFailed(databaseError.getMessage());
            }
        });
    }


    @Override
    public void onFirebaseLoadSuccess(List<ItemGroup> itemGroupList) {
        Log.d("JADOO", "onDataChange: Setting Adapter");
        MyItemGroupAdapter adapter = new MyItemGroupAdapter(ScheduleOrder.this,itemGroupList,itemData1);
        my_recycler_view.setAdapter(adapter);

    }

    @Override
    public void onFirebaseLoadFailed(String message) {

    }


}




First Adapter Java file第一个适配器 Java 文件

public class MyItemGroupAdapter extends RecyclerView.Adapter<MyItemGroupAdapter.MyViewHolder> {
    private Context context;
    private List<ItemGroup>dataList;
    private ItemData name;
    public MyItemGroupAdapter(Context context, List<ItemGroup> dataList,ItemData data) {
        this.context = context;
        this.dataList = dataList;
        this.name=data;
    }
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        View itemView=LayoutInflater.from(context).inflate(R.layout.tempcartlayout,viewGroup,false);
        return new MyViewHolder(itemView);
    }
    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, int i) {
        MyItemAdapter itemListAdapter = new MyItemAdapter(context,name);
        myViewHolder.timee.setText(dataList.get(i).getD_Time());
        myViewHolder.cost.setText(dataList.get(i).getF_Amount());
        Log.d("JADOO", "onDataChange:  IN MY ITEM GRP ADAPTER "+name.getA_Item_name());
        myViewHolder.recycler_view_item_list.setHasFixedSize(true);
        myViewHolder.recycler_view_item_list.setLayoutManager(new CustomLinearLayoutManager(context,LinearLayoutManager.VERTICAL,false));
        myViewHolder.recycler_view_item_list.setAdapter(itemListAdapter);
        myViewHolder.recycler_view_item_list.setNestedScrollingEnabled(false);

        myViewHolder.can.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(context, "Button More : "+myViewHolder.timee.getText()+"  --  "+myViewHolder.cost.getText(), Toast.LENGTH_SHORT).show();
            }
        });
    }
    @Override
    public int getItemCount() {
        return (dataList != null ? dataList.size() : 0);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView timee,cost;
        Button can;
        RecyclerView recycler_view_item_list;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            timee=itemView.findViewById(R.id.reorder_time);
            cost=itemView.findViewById(R.id.reorder_cost);
            can=itemView.findViewById(R.id.button);
            Log.d("JADOO", "onDataChange: VIEW HOLDER ");
            recycler_view_item_list=itemView.findViewById(R.id.schedulecart);
}}}

Second Adapter File第二个适配器文件


    private Context context;
    private ItemData name123;
    public MyItemAdapter(Context context, ItemData Item_Name) {
        this.context = context;
        this.name123=Item_Name;
    }
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View itemView= LayoutInflater.from(context).inflate(R.layout.cart_list_layout,viewGroup,false);
        return new MyViewHolder(itemView);
    }
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
        Log.d("JADOO", "onBindViewHolder:  IN MY ITEM ADAPTER");
        ItemData itemData=new ItemData();
        myViewHolder.m_name.setText(itemData.getA_Item_name());
        myViewHolder.m_cost.setText(itemData.getC_Price());
        myViewHolder.m_quant.setText(itemData.getB_Quantity());
    }
    @Override
    public int getItemCount() {
        return 0;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        TextView m_name,m_quant,m_cost;
        IItemClickListener iItemClickListener;
        public void setiItemClickListener(IItemClickListener iItemClickListener){
            this.iItemClickListener=iItemClickListener;
        }
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            m_name=itemView.findViewById(R.id.tv_menu_name1);
            m_quant=itemView.findViewById(R.id.quantity);
            m_cost=itemView.findViewById(R.id.amount);
            itemView.setOnClickListener(this);
        }
        @Override
        public void onClick(View view) {
            iItemClickListener.onItemClickListener(view,getAdapterPosition());
        }}}

Error错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.food.pilo, PID: 28457
    java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setAdapter(androidx.recyclerview.widget.RecyclerView$Adapter)' on a null object reference
        at com.food.pilo.ScheduleOrder.onFirebaseLoadSuccess(ScheduleOrder.java:161)
        at com.food.pilo.ScheduleOrder$2.onDataChange(ScheduleOrder.java:143)
        at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@16.0.4:183)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.4:75)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.4:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.4:55)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7156)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)```

Your return value is 0 in Second adapter.您在第二个适配器中的返回值为 0。 Please add arraylist to second adapter.请将 arraylist 添加到第二个适配器。

@Override
public int getItemCount() {
    return 0;
}

I think my_recycler_view=findViewById(R.id.my_recyclr_view);我认为my_recycler_view=findViewById(R.id.my_recyclr_view); or或者

findViewById(R.id.schedulecart); returning null please check on these lines.返回 null 请检查这些行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 遇到错误 Attempt to invoke virtual method &#39;RecyclerView.setAdapter(RecyclerView$Adapter)&#39; on a null object reference in Android Studio - Encountered the error Attempt to invoke virtual method 'RecyclerView.setAdapter(RecyclerView$Adapter)' on a null object reference in Android Studio 这是什么“RecyclerView 没有 LayoutManager androidx.recyclerview.widget.RecyclerView”错误? - What is this "RecyclerView has no LayoutManager androidx.recyclerview.widget.RecyclerView" error? RecyclerView.setAdapter 未解决 - RecyclerView.setAdapter not being resolved 当我来到 recyclerView.setAdapter(adapter) 部分时,我在 android studio 中的应用程序崩溃了; - my app in android studio is crashing when i come to the part recyclerView.setAdapter(adapter); 从工作线程使用RecyclerView.setAdapter - Using RecyclerView.setAdapter from worker thread androidx.cardview.widget.CardView 不能转换为 androidx.recyclerview.widget.RecyclerView - androidx.cardview.widget.CardView cannot be cast to androidx.recyclerview.widget.RecyclerView android.widget.FrameLayout 不能转换为 androidx.recyclerview.widget.RecyclerView - android.widget.FrameLayout cannot be cast to androidx.recyclerview.widget.RecyclerView 未连接适配器; 跳过布局 _____ AndroidX RecyclerView - No adapter attached; skipping layout _____ AndroidX RecyclerView Android Java - 在 RecyclerView.setAdapter() 上收到空引用错误 - Android Java - Receiving null reference error on RecyclerView.setAdapter() Android:RecyclerView.SetAdapter导致应用程序崩溃,没有明显错误 - Android: RecyclerView.SetAdapter causes an application crash with no obvious error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM