Android 致命异常:尝试调用接口方法';int java.util.List.size()';在空对象引用getItemCount上

Android 致命异常:尝试调用接口方法';int java.util.List.size()';在空对象引用getItemCount上,android,firebase,android-recyclerview,firebase-storage,Android,Firebase,Android Recyclerview,Firebase Storage,我只是尝试使用recyclerview显示上传到Firebase存储的所有图像。每次我运行我的应用程序测试我的应用程序崩溃的所有内容时,当我检查Logcat时,它总是告诉我尝试在com.myapp.yoody.AdapterOne.getItemCount上的空对象引用上调用接口方法“int java.util.List.size()”。我只是想知道它所指的空对象是什么。是不是说它没有连接到firebase?或者是什么?几天来,我一直在努力让这件事运作起来,但我什么都没有。请帮帮我。我希望我的问

我只是尝试使用recyclerview显示上传到Firebase存储的所有图像。每次我运行我的应用程序测试我的应用程序崩溃的所有内容时,当我检查Logcat时,它总是告诉我
尝试在com.myapp.yoody.AdapterOne.getItemCount上的空对象引用上调用接口方法“int java.util.List.size()”。我只是想知道它所指的空对象是什么。是不是说它没有连接到firebase?或者是什么?几天来,我一直在努力让这件事运作起来,但我什么都没有。请帮帮我。我希望我的问题听起来不会令人困惑。下面是我的代码。提前谢谢

     //Profilepage (The page where the images are supposed to display)    

           FirebaseAuth firebaseAuth;
        FirebaseUser firebaseUser;
        TextView name;
        DatabaseReference databaseReference;
        StorageReference storageReference;
        private Context mccontext=ProfileActivity.this;
        RecyclerView recyclerView;
        AdapterOne adapter1;
        String uid;
        // Folder path for Firebase Storage.

        ImageView imageView;

        //List<ImageUploadInfo> list=new ArrayList<>();
        ArrayList<ImageUploadInfo> imagesList;
        // Folder path for Firebase Storage.
        String Storage_Path = "Images/";

        // Root Database Name for Firebase Database.
        public static final String Database_Path = "Images";



        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_profile);
            recyclerView=findViewById(R.id.recyclerView);
            LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
            recyclerView.setHasFixedSize(true);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
            overridePendingTransition(R.anim.slide_right, R.anim.slide_left);




            adapter1=new AdapterOne(mccontext,imagesList);
            recyclerView.setLayoutManager(linearLayoutManager);
            recyclerView.setAdapter(adapter1);
            imagesList=new ArrayList<>();
            adapter1.notifyDataSetChanged();
            //databaseReference=FirebaseDatabase.getInstance().getReference("Users");
            uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            // Assign FirebaseStorage instance to storageReference.
            storageReference = FirebaseStorage.getInstance().getReference();
            // Assign FirebaseDatabase instance with root database name.
            databaseReference = FirebaseDatabase.getInstance().getReference(Database_Path);

            // Adding Add Value Event Listener to databaseReference.

            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    for(DataSnapshot postSnapshot:dataSnapshot.getChildren() ){

                        ImageUploadInfo imageUploadInfo=postSnapshot.getValue(ImageUploadInfo.class);
                        imagesList.add(imageUploadInfo);

                    }
                    adapter1 = new AdapterOne(getApplicationContext(), imagesList);
                    recyclerView.setAdapter(adapter1);


                }



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

                }
            });





        }








        }

       //My Adapter class

       public class AdapterOne extends RecyclerView.Adapter<AdapterOne.ViewHolder> {
        Context context;
        List<ImageUploadInfo> imagesList;

        public AdapterOne(Context c, List<ImageUploadInfo> TempList) {
            imagesList = TempList;
            context = c;
        }

        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false);
            ViewHolder viewHolder = new ViewHolder(view);
            return viewHolder;
        }

        @Override
        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
            ImageUploadInfo imageUploadInfo = imagesList.get(position);


            Glide.with(context).load(imageUploadInfo.getImageUrl()).into(holder.imageView);
        }

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


        }



        public class ViewHolder extends RecyclerView.ViewHolder {

            public ImageView imageView;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);

                imageView=(ImageView) itemView.findViewById(R.id.imageview);
            }
        }
    }

     //UploadInfo class

     public class ImageUploadInfo {

   // public String imageName;

    public String imageURL;



    public ImageUploadInfo() {} // default constructor that takes no arguments

    public ImageUploadInfo( String url) {

        this.imageURL= url;
    }

    public String getImageUrl() {
        return imageURL;
    }


    public void setImageURL(String imageURL) {
        this.imageURL = imageURL;
    }
}

   //CardView class

   <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:background="@color/white"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        android:orientation="vertical"
        >

        <GridLayout
            android:layout_width="match_parent"

            android:layout_height="fill_parent"
            android:layout_marginTop="0dp"
            android:alignmentMode="alignMargins"
            android:columnCount="1"
            android:paddingTop="20dp"
            android:columnOrderPreserved="false"
            android:rowCount="3">


            <!-- 3 -->


            <!-- 4 -->

            <androidx.cardview.widget.CardView
                android:layout_width="350dp"
                android:layout_height="320dp"
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_marginLeft="6dp"
                android:layout_marginRight="4dp"
                android:layout_marginBottom="10dp"
                app:cardCornerRadius="0dp"
                app:cardElevation="0dp">

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center"
                    android:id="@+id/imageview"
                     />

                <!--

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/imagename"
                    android:text="Image Name"
                    />
                -->
            </androidx.cardview.widget.CardView>



        </GridLayout>

    </LinearLayout>


</androidx.constraintlayout.widget.ConstraintLayout>
//Profilepage(图像应该显示的页面)
FirebaseAuth FirebaseAuth;
FirebaseUser FirebaseUser;
文本视图名称;
数据库参考数据库参考;
StorageReference-StorageReference;
私有上下文mccontext=ProfileActivity.this;
回收视图回收视图;
适配器1;
字符串uid;
//Firebase存储的文件夹路径。
图像视图图像视图;
//列表=新的ArrayList();
ArrayList图像列表;
//Firebase存储的文件夹路径。
字符串存储_Path=“Images/”;
//Firebase数据库的根数据库名称。
公共静态最终字符串数据库\u Path=“Images”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
recyclerView=findViewById(R.id.recyclerView);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(此);
recyclerView.setHasFixedSize(true);
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u NOSENSOR);
覆盖转换(右动画幻灯片,左动画幻灯片);
adapter1=新适配器(mccontext、imagesList);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(适配器1);
imagesList=newarraylist();
adapter1.notifyDataSetChanged();
//databaseReference=FirebaseDatabase.getInstance().getReference(“用户”);
uid=FirebaseAuth.getInstance().getCurrentUser().getUid();
//将FirebaseStorage实例分配给storageReference。
storageReference=FirebaseStorage.getInstance().getReference();
//使用根数据库名称分配FirebaseDatabase实例。
databaseReference=FirebaseDatabase.getInstance().getReference(数据库路径);
//将增值事件侦听器添加到databaseReference。
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){
ImageUploadInfo ImageUploadInfo=postSnapshot.getValue(ImageUploadInfo.class);
imagesList.add(imageUploadInfo);
}
adapter1=新适配器(getApplicationContext(),imagesList);
recyclerView.setAdapter(适配器1);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
}
//我的适配器类

公共类AdapterOne扩展了RecyclerView.Adapter

问题是,在将列表发送到适配器后,您需要初始化列表。所以适配器试图在不存在的列表上执行其方法。在将其发送到适配器之前移动初始通道

请发布数据库结构在将其传递给适配器之前是否尝试初始化
imagesList
adapter1=newadapterOne(getApplicationContext(),imagesList)只需调试这一行并检查
imageList
是否不为空。@Ashish我刚刚发布了我的数据库structure@MohamedMohsin我想我确实明白了。很抱歉我回复晚了。我确实修复了,但我的图像仍然无法显示