简体   繁体   English

RecyclerView错误:是什么使小部件为空?

[英]RecyclerView error : what makes widget null?

This is my error 这是我的错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.blogapp, PID: 20085
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.together.adapter.PetchingBunyangAdapter$2.onDataChange(PetchingBunyangAdapter.java:152)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@17.0.0:75)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@17.0.0:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@17.0.0:55)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

I know what meaning of null but in this case i can not under stand i try to using recycler in my fragment 我知道null的含义,但在这种情况下我无法理解,我尝试在片段中使用回收站

This is my adapater that can't find widget 这是我找不到的小工具

package com.example.together.adapter;

import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.example.together.R;
import com.example.together.activities.petching.PetchingBunyangDetailInfo;
import com.example.together.common.Common;
import com.example.together.model.PetchingBunyang;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.List;

public class PetchingBunyangAdapter extends RecyclerView.Adapter<PetchingBunyangAdapter.MyViewHolder> {


    private static final String TAG = "PetchingBunyangAdapter";

    FirebaseUser firebaseUser;
    DatabaseReference reference;

    Context mContext;
    List<PetchingBunyang> mPetchingBunyang;

    public PetchingBunyangAdapter(Context mContext, List<PetchingBunyang> mPetchingBunyang) {
        this.mContext = mContext;
        this.mPetchingBunyang = mPetchingBunyang;
    }


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(mContext).inflate(R.layout.item_petching_bunyang_pet_list, parent, false);
        return new PetchingBunyangAdapter.MyViewHolder(view);

    }

    @Override
    public void onBindViewHolder(MyViewHolder viewHolder, int position)
    {
        Common common = new Common();

        final PetchingBunyang petchingBunyang = mPetchingBunyang.get(position);
        petchingBunyang.getPetBunyangId();


        Log.d(TAG, "AAAAAA"+mPetchingBunyang.get(0).getPetBunyangId());

        Log.d(TAG, "TTTT "+petchingBunyang.getPetBunyangId());

        Log.d(TAG, "onBindViewHolder: "+Log.d(TAG, "onBindViewHolder: "));
        Log.d(TAG, "onBindViewHolder: 초코우유"+mPetchingBunyang.get(0).getPetBunyangId());
        Log.d(TAG, "딸기우유: "+mPetchingBunyang.get(position).getPetBunyangId());

        getPetInfo(mPetchingBunyang.get(position).getPetBunyangId(), viewHolder.img_pet, viewHolder.petName, viewHolder.petAge, viewHolder.petBreed, viewHolder.gender_m, viewHolder.gender_w);

        viewHolder.itemView.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(mContext, PetchingBunyangDetailInfo.class);

                // 디테일 정보 전달....
                intent.putExtra("petname", mPetchingBunyang.get(position).getPetName());
                intent.putExtra("intro", mPetchingBunyang.get(position).getPetAge());
                intent.putExtra("Thumbnail", mPetchingBunyang.get(position).getPetBreed());

                // start the activity
                mContext.startActivity(intent);
            }
        });


    }


    @Override
    public int getItemCount()
    {
        return mPetchingBunyang.size();
    }



    public class MyViewHolder extends RecyclerView.ViewHolder
    {

         public TextView petName, petBreed, petAge;
         public ImageView gender_m, gender_w, bunyangpet_detail, img_pet;

        public MyViewHolder(View itemView)
        {
            super(itemView);

            //펫 프로필
            petName = itemView.findViewById(R.id.petName);
            petBreed = itemView.findViewById(R.id.petBreed);
            petAge = itemView.findViewById(R.id.petAge);
            img_pet = itemView.findViewById(R.id.img_pet);

            //이미지들
            img_pet = itemView.findViewById(R.id.img_pet);
            gender_m = itemView.findViewById(R.id.gender_m);
            gender_w = itemView.findViewById(R.id.gender_w);

            //상세보기 넘어가는 icon
            bunyangpet_detail = itemView.findViewById(R.id.bunyangpet_detail);



        }
    }






    // 펫 정보 이름, 나이, 견종, 성별,
    private void getPetInfo(String petbunyangid, final ImageView imageView, final TextView petAge, final TextView petName, final TextView petBreed, final ImageView gender_m, final ImageView gender_w)
    {

        Log.d(TAG, "펫분양: "+petbunyangid);

        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("PetchingBunyang").child(petbunyangid);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                PetchingBunyang petchingBunyang = dataSnapshot.getValue(PetchingBunyang.class);
                Log.d(TAG, "펫정보 가져오는지 보자: "+petchingBunyang.getPetName());
                Glide.with(mContext).load(petchingBunyang.getPetImg()).into(imageView);
                petName.setText(petchingBunyang.getPetName());
                petBreed.setText(petchingBunyang.getPetBreed());
                petAge.setText(petchingBunyang.getPetAge());

                //성별표시
                if (petchingBunyang.getPetGender().equals("Female"))
                {
                    gender_w.setVisibility(View.VISIBLE);
                }else
                {
                    gender_m.setVisibility(View.VISIBLE);
                }
//

            }

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

            }
        });

    }



}

but i already get the widget as u see from here From here i already added widget 但是我已经从这里看到了小部件,从这里我已经添加了小部件

public class MyViewHolder extends RecyclerView.ViewHolder{}

I don't understand what makes it null? 我不明白是什么使它无效? eventhough it already exist 即使它已经存在

Try debugging these value , as one of the value might be coming null . 尝试调试这些值,因为其中一个值可能为null。

            petchingBunyang.getPetName();
            petchingBunyang.getPetBreed();
            petchingBunyang.getPetAge()

and do check if Pet Age is String or not . 并检查Pet Age是否为String。

暂无
暂无

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

相关问题 这是什么“RecyclerView 没有 LayoutManager androidx.recyclerview.widget.RecyclerView”错误? - What is this "RecyclerView has no LayoutManager androidx.recyclerview.widget.RecyclerView" error? RecyclerView 滚动进行更改 - RecyclerView scrolling makes changes 遇到在 null object 参考上调用虚拟方法 'void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)' 的尝试 - Encountering a Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference Null 带有片段的指针异常 - 尝试调用虚拟方法 'void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)' - Null Pointer Exception with Fragment - Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)' 尝试在 null object 引用上调用虚拟方法 'void androidx.recyclerview.widget.RecyclerView.removeViewAt(int)' - Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.removeViewAt(int)' on a null object reference 错误:“空对象引用上的&#39;void RecyclerView.setLayoutManager(RecyclerView $ LayoutManager)&#39;” - Error : “ 'void RecyclerView.setLayoutManager(RecyclerView$LayoutManager)' on a null object reference” 错误:在空对象引用上,SavedInstanceState旋转recyclerview - Error : on a null object reference, SavedInstanceState rotation recyclerview Android Studio 错误中的 Recyclerview - “null object 参考” - Recyclerview in Android Studio Error - "null object reference" RecyclerView null object 重新填充时参考错误 - RecyclerView null object reference error when repopulate eclipse中无法启动android.support.v7.widget.Recyclerview错误 - android.support.v7.widget.Recyclerview could not be initiated error in eclipse
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM