0

I'm trying to fetching datas with Retrofit with an adapter on a listview viewholder.
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference on ViewHolder adapter first line and ViewholderFragment listView.setAdapter line. My codes below. I dont know what can ı do and where is the problem.

Can anyone help me to overcome this issue?

ViewholderAdapter.java

public class ViewholderAdapter extends ArrayAdapter{

@Override
public  int getCount(){return items.size(); }   //java.lang.NullPointerException  

@Override
public Result getItem(int position){
    return items.get(position);
}
public long getItemId(int position){
    return position;
}

private class ViewHolder
{
     TextView movie_year;
     TextView movie_title;
     TextView movie_desc;
     ImageView movie_poster;
    public ViewHolder(View view)
    {
        movie_year =(TextView)view.findViewById(R.id.movie_year);
        movie_title =(TextView)view.findViewById(R.id.movie_title);
        movie_desc =(TextView) view.findViewById(R.id.movie_desc);
        movie_poster =(ImageView)view.findViewById(R.id.movie_poster);

    }

}

@Override
public View getView(int position,View convertview,ViewGroup parent)
{   View view=convertview;
    ViewHolder holder;
    if(view==null)
    {
        view=LayoutInflater.from(context).inflate(R.layout.viewholder_item,parent,false);
        holder=new ViewHolder(view);
        view.setTag(holder);
    }
    else
        {
            holder=(ViewHolder) view.getTag();
        }

        holder.movie_title.setText(items.get(position).getTitle());

    return view;
 }
}

ViewHolderFragment.Java

public ViewHolderFragment() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup fragmentContainer, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_view_holder, fragmentContainer, false);
    ButterKnife.bind(this, view);
    return view;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ListView listView = (ListView) getActivity().findViewById(R.id.listView);
    listView.setAdapter(adapter);  //java.lang.NullPointerException: 
    adapter =  new ViewholderAdapter (getContext());
    movieService = MovieApi.getClient().create(MovieService.class);
    loadFirstPage();
}
private void loadFirstPage() {
    Log.d(TAG, "loadFirstPage: ");
    callTopRatedMoviesApi().enqueue(new Callback<TopRatedMovies>() {
        @Override
        public void onResponse(Call<TopRatedMovies> call, Response<TopRatedMovies> response) {
            List<Result> results = fetchResults(response);
     adapter.addAll(results);
        }

        @Override
        public void onFailure(Call<TopRatedMovies> call, Throwable t) {
            t.printStackTrace();

        }
    });

}
private List<Result> fetchResults(Response<TopRatedMovies> response) {
    TopRatedMovies topRatedMovies = response.body();

    return topRatedMovies.getResults();
}
private Call<TopRatedMovies> callTopRatedMoviesApi() {
    return movieService.getTopRatedMovies(
            getString(R.string.my_api_key),
            "en_US",
            currentPage
    );
 }

}
N. Tuba
  • 40
  • 1
  • 9
  • Please read https://stackoverflow.com/help/how-to-ask, your question is asking for someone to debug your code, which is considered offtopic on Stackoverflow. – Capricorn Jul 21 '18 at 08:31
  • I've edited it. Is there any problem now? – N. Tuba Jul 23 '18 at 14:22
  • `items` is `null`, you've not initialised it – Michael Dodd Jul 24 '18 at 13:03
  • 1
    You said you got NullPointerException at this syntax: `return items.size();`, that means `items` variable is null. You need to initialize `items` before using its `.size()`. For this syntax: `listView.setAdapter(adapter);`, looks like `listView` is null because `getActivity().findViewById(R.id.listView);` in the previous line returns null. Please read the [duplicate target question](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) for more info. – ekad Jul 24 '18 at 13:11
  • thank u it is works! – N. Tuba Jul 25 '18 at 09:36

0 Answers0