Ошибка, возникающая при попытке вернуть размер списка в классе адаптера в Android studio

#java #android #android-fragments #android-recyclerview

Вопрос:

Я разрабатываю приложение, в котором использую представление recycler. Когда я пытаюсь отобразить представление переработчика из фрагмента, я получаю эту ошибку «Попытка вызвать метод интерфейса» int java.util.List.size()» на нулевой ссылке на объект в адаптерах.PostAdapter.getItemCount’

Почему возникает эта ошибка и как я могу это исправить?

Мой дом fragment.java код:-

 package Fragments;

import android.os.Bundle;

import androidx.annotation.ContentView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.smart.instagram.R;

import java.util.ArrayList;
import java.util.List;

import Adapters.PostAdapter;
import Models.PostsModel;

public class HomeFragment extends Fragment {
    RecyclerView story_rv;
    RecyclerView posts_rv;
    LinearLayoutManager layoutManager;
    Listamp;<PostsModelamp;> postsList;
    PostAdapter postAdapter;



    public HomeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

       View parentHolder = inflater.inflate(R.layout.fragment_home, container, false);

//
//        //posts rv
//
        return parentHolder;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        story_rv = getView().findViewById(R.id.story_rv);
        posts_rv = getView().findViewById(R.id.post_rv);
        postAdapter = new PostAdapter(postsList);
        layoutManager = new LinearLayoutManager(getContext());
        layoutManager.setOrientation(RecyclerView.VERTICAL);
        posts_rv.setLayoutManager(layoutManager);
        posts_rv.setAdapter(postAdapter);

        postsList = new ArrayListamp;<amp;>();
        postsList.add(new PostsModel(R.drawable.story1, "Elisa Shermon", R.drawable.ic_baseline_more_vert_24, R.drawable.story1
                , R.drawable.ic_baseline_favorite_border_24, "2.1K", R.drawable.ic_baseline_chat_bubble_24, "230",
                R.drawable.ic_baseline_send_24, "100", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story2, "Justin Christian", R.drawable.ic_baseline_more_vert_24, R.drawable.story2
                , R.drawable.ic_baseline_favorite_border_24, "9.6K", R.drawable.ic_baseline_chat_bubble_24, "890",
                R.drawable.ic_baseline_send_24, "409", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story3, "Travel Bug", R.drawable.ic_baseline_more_vert_24, R.drawable.story3
                , R.drawable.ic_baseline_favorite_border_24, "2.1M", R.drawable.ic_baseline_chat_bubble_24, "230K",
                R.drawable.ic_baseline_send_24, "900K", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story4, "Nick Jonas", R.drawable.ic_baseline_more_vert_24, R.drawable.story4
                , R.drawable.ic_baseline_favorite_border_24, "4M", R.drawable.ic_baseline_chat_bubble_24, "450K",
                R.drawable.ic_baseline_send_24, "453", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story5, "The Gaming Beast", R.drawable.ic_baseline_more_vert_24, R.drawable.story5
                , R.drawable.ic_baseline_favorite_border_24, "2.1K", R.drawable.ic_baseline_chat_bubble_24, "230",
                R.drawable.ic_baseline_send_24, "100", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story6, "Food Spot", R.drawable.ic_baseline_more_vert_24, R.drawable.story1
                , R.drawable.ic_baseline_favorite_border_24, "2.1K", R.drawable.ic_baseline_chat_bubble_24, "230",
                R.drawable.ic_baseline_send_24, "100", R.drawable.ic_baseline_bookmark_border_24));
    }
}


 

Мой PostAdapter.java код:-

 package Adapters;

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.smart.instagram.R;

import java.util.List;

import Models.PostsModel;

public class PostAdapter extends RecyclerView.Adapteramp;<PostAdapter.ViewHolderamp;> {

    public Listamp;<PostsModelamp;> postList;

    public PostAdapter(Listamp;<PostsModelamp;>postList){
        this.postList = postList;
    }

    @NonNull
    @Override
    //Implements design of our layout resource file
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.posts_rv, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        int profile_pic = postList.get(position).getProfile_pic();
        int more = postList.get(position).getMore();
        int post_image = postList.get(position).getPost_image();
        int like = postList.get(position).getLike();
        int share = postList.get(position).getShare();
        int comment = postList.get(position).getComment();
        int bookmark = postList.get(position).getBookmark();
        String user_name = postList.get(position).getUser_name();
        String like_no = postList.get(position).getLike_no();
        String share_no = postList.get(position).getShare_no();
        String comment_no = postList.get(position).getComment_no();

        holder.setData(profile_pic, more, post_image, like, share, comment, bookmark,
                user_name, like_no, comment_no, share_no);

    }

    //Helps to bind data from MainActivity to post_rv


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


    public class ViewHolder extends RecyclerView.ViewHolder{
        private ImageView profile_img, post_img, more_img, like_img, comment_img, share_img, bookmark_img;
        private TextView name, like_nos, comment_nos, share_nos;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            profile_img = itemView.findViewById(R.id.profile_pic);
            name = itemView.findViewById(R.id.user_name);
            more_img = itemView.findViewById(R.id.more);
            post_img = itemView.findViewById(R.id.post_image);
            like_img = itemView.findViewById(R.id.like);
            like_nos = itemView.findViewById(R.id.like_no);
            share_img = itemView.findViewById(R.id.share);
            share_nos = itemView.findViewById(R.id.share_no);
            comment_img = itemView.findViewById(R.id.comment);
            comment_nos = itemView.findViewById(R.id.comment_no);
            bookmark_img = itemView.findViewById(R.id.bookmark);

        }

        public void setData(int profile_pic, int more, int post_image, int like, int share, int comment, int bookmark,
                            String user_name, String like_no, String comment_no, String share_no) {
            profile_img.setImageResource(profile_pic);
            more_img.setImageResource(more);
            post_img.setImageResource(post_image);
            like_img.setImageResource(like);
            share_img.setImageResource(share);
            comment_img.setImageResource(comment);
            bookmark_img.setImageResource(bookmark);
            name.setText(user_name);
            like_nos.setText(like_no);
            comment_nos.setText(comment_no);
            share_nos.setText(share_no);
        }
    }


}

 

Ответ №1:

в списке postlist нет значений, сначала добавьте список, затем установите адаптер

 @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        story_rv = getView().findViewById(R.id.story_rv);
        posts_rv = getView().findViewById(R.id.post_rv);


        postsList = new ArrayListamp;<amp;>();
        postsList.add(new PostsModel(R.drawable.story1, "Elisa Shermon", R.drawable.ic_baseline_more_vert_24, R.drawable.story1
                , R.drawable.ic_baseline_favorite_border_24, "2.1K", R.drawable.ic_baseline_chat_bubble_24, "230",
                R.drawable.ic_baseline_send_24, "100", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story2, "Justin Christian", R.drawable.ic_baseline_more_vert_24, R.drawable.story2
                , R.drawable.ic_baseline_favorite_border_24, "9.6K", R.drawable.ic_baseline_chat_bubble_24, "890",
                R.drawable.ic_baseline_send_24, "409", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story3, "Travel Bug", R.drawable.ic_baseline_more_vert_24, R.drawable.story3
                , R.drawable.ic_baseline_favorite_border_24, "2.1M", R.drawable.ic_baseline_chat_bubble_24, "230K",
                R.drawable.ic_baseline_send_24, "900K", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story4, "Nick Jonas", R.drawable.ic_baseline_more_vert_24, R.drawable.story4
                , R.drawable.ic_baseline_favorite_border_24, "4M", R.drawable.ic_baseline_chat_bubble_24, "450K",
                R.drawable.ic_baseline_send_24, "453", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story5, "The Gaming Beast", R.drawable.ic_baseline_more_vert_24, R.drawable.story5
                , R.drawable.ic_baseline_favorite_border_24, "2.1K", R.drawable.ic_baseline_chat_bubble_24, "230",
                R.drawable.ic_baseline_send_24, "100", R.drawable.ic_baseline_bookmark_border_24));
        postsList.add(new PostsModel(R.drawable.story6, "Food Spot", R.drawable.ic_baseline_more_vert_24, R.drawable.story1
                , R.drawable.ic_baseline_favorite_border_24, "2.1K", R.drawable.ic_baseline_chat_bubble_24, "230",
                R.drawable.ic_baseline_send_24, "100", R.drawable.ic_baseline_bookmark_border_24));

        postAdapter = new PostAdapter(postsList);
        layoutManager = new LinearLayoutManager(getContext());
        layoutManager.setOrientation(RecyclerView.VERTICAL);
        posts_rv.setLayoutManager(layoutManager);
        posts_rv.setAdapter(postAdapter);
    }
}