почему я получаю исключение NullPointerException при использовании библиотеки Retrofit - PullRequest
0 голосов
/ 25 марта 2019

Я использую модифицированную библиотеку для получения данных и использования ее в RecyclerView, но я столкнулся с NullPointerExceptionin для нулевой ссылки на объект при вызове recyclerView с тех пор, как прочитал проблемы в Stackoverflow, но они мне не помогли, я Я уверен, что я получаю данные с сервера, но я не знаю, почему я получил нулевую ошибку, любая помощь будет признательна

ошибка:

  java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
    at Adaptor.NewsAdaptor.getItemCount(NewsAdaptor.java:50)

MainActivity

public class TextActivity extends Activity {

RecyclerView recyclerView;
List<NewsItem> listofNews;
NewsAdaptor newsAdaptor;


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

    //  Must Instanciate the Requirements
    recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    recyclerView.setLayoutManager(new LinearLayoutManager(TextActivity.this));

    listofNews = new ArrayList<>();

    Call<FetechingNewsResponse> call = RetrofitClient.getInstance().getApi().getTrafficeNews();

    call.enqueue(new Callback<FetechingNewsResponse>() {
        @Override
        public void onResponse(Call<FetechingNewsResponse> call, Response<FetechingNewsResponse> response) {


            Log.v("fromTextActivity", response.body().isStatus() + "");
            listofNews = response.body().getList();

            newsAdaptor = new NewsAdaptor(TextActivity.this, listofNews);
            recyclerView.setAdapter(newsAdaptor);
        }

        @Override
        public void onFailure(Call<FetechingNewsResponse> call, Throwable t) {

        }
    });

}

}

Класс NewsAdaptor

 public class NewsAdaptor extends     
      RecyclerView.Adapter<NewsAdaptor.NewsViewHolder> {

private Context mct;
private List<NewsItem> newsItems;

public NewsAdaptor(Context mct, List<NewsItem> newsItems) {
    this.mct = mct;
    this.newsItems = new ArrayList<>();
    this.newsItems = newsItems;
}

@NonNull
@Override
public NewsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

    View view = LayoutInflater.from(mct).inflate(R.layout.recycle_item, viewGroup, false);
    return new NewsViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull NewsViewHolder newsViewHolder, int i) {

    NewsItem newsI = newsItems.get(i);

    Picasso.get().load(newsI.getThumb()).into(newsViewHolder.newsPhoto);
    newsViewHolder.newsMainBody.setText(newsI.getBody());
    newsViewHolder.newsTitle.setText(newsI.getTitle());
}

@Override
public int getItemCount() {
    Log.v("from_adoptor", newsItems.size() + "");
    return this.newsItems.size();
}

class NewsViewHolder extends RecyclerView.ViewHolder {

    TextView newsMainBody, newsTitle;
    ImageView newsPhoto;

    public NewsViewHolder(@NonNull View itemView) {
        super(itemView);
        newsMainBody = itemView.findViewById(R.id.display_body);
        newsTitle = itemView.findViewById(R.id.display_text);
        newsPhoto = itemView.findViewById(R.id.display_photo);
    }
}
* *} Тысяча двадцать-один

FetchingClass

public class FetechingNewsResponse {

private boolean status;
private List<NewsItem> list;

public FetechingNewsResponse(boolean status, String news, NewsItem newsItem, List<NewsItem> list) {
    this.status = status;
    this.list = list;
}

public boolean isStatus() {
    return status;
}

public List<NewsItem> getList() {
    return list;
}

}

Api

открытый интерфейс Api {

 @GET("news")
Call<FetechingNewsResponse> getTrafficeNews();

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...