Невозможно получить данные из newsapi.org с помощью библиотеки.Помогите отладить - PullRequest
0 голосов
/ 08 июля 2019

Я использую библиотеку, чтобы легко получить новости с newsapi.org

implementation 'com.github.KwabenBerko:News-API-Java:1.0.0'

Библиотека работала один раз, на самом деле я загрузил новости впервые ... и с тех пор больше никогда.Это не проблема интернета, так как мое приложение работает в Интернете, а все остальное работает нормально.Так что моя проблема в том, как я могу найти то, что не так?В logcat я получил сообщение для адаптера recycleview, потому что оно пустое (нет данных для отображения), поэтому это сообщение не помогает.Код, который я использую:

private void setupNews() {
        if(newsArticles.size() != 50) {
            NewsApiClient newsApiClient = new NewsApiClient(getString(R.string.feednews_api_key));

            newsApiClient.getEverything(
                    new EverythingRequest.Builder()
                            .q("Fitness")
                            .pageSize(50)
                            .language("en")
                            .build(),
                    new NewsApiClient.ArticlesResponseCallback() {

                        @Override
                        public void onSuccess(ArticleResponse articleResponse) {

                            for (int i = 0; i < 50; i++) {
                                newsArticles.add(new NewsArticle(articleResponse.getArticles().get(i).getTitle(),
                                        articleResponse.getArticles().get(i).getDescription(),
                                        articleResponse.getArticles().get(i).getPublishedAt(),
                                        articleResponse.getArticles().get(i).getSource().getName(),
                                        articleResponse.getArticles().get(i).getUrlToImage(),
                                        articleResponse.getArticles().get(i).getUrl()));
                            }

                            RecyclerView newsRecycler = findViewById(R.id.news_articles_list);
                            Log.d(TAG, "setup: " + newsArticles.size());
                            ViewCompat.setNestedScrollingEnabled(newsRecycler, false);

                            newsRecycler.setHasFixedSize(true);
                            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
                            RecyclerView.Adapter adapter = new NewsAdapter(newsArticles, getApplicationContext());
                            newsRecycler.setLayoutManager(layoutManager);
                            newsRecycler.setAdapter(adapter);
                            mProgressBar.setVisibility(View.GONE);

                        }

                        @Override
                        public void onFailure(Throwable throwable) {
                            Log.d(TAG, "onFailure: " + throwable);
                            System.out.println(throwable.getMessage());
                            mProgressBar.setVisibility(View.GONE);
                            mCheckNewsRecieved.setVisibility(View.VISIBLE);

                        }

                    }
            );

Я проверил 2 разных ключа, поэтому, вероятно, нет проблем с ключом.Я проверил все в адаптере Recycleview и держателе просмотра.Я прочитал все сообщения об ошибке E/RecyclerView: No adapter attached; skipping layout, которую я получил в logcat, так что я почти убежден, что я не получаю данные с newsapi.org.Так что мои вопросы, когда у меня заканчиваются идеи, как я могу отладить такую ​​проблему?

ОБНОВЛЕНИЕ: Я публикую адаптер повторного просмотра на всякий случай

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {

    private final ArrayList<NewsArticle> mNewsArticle;
    private final Context mContext;

    public NewsAdapter(ArrayList<NewsArticle> mNewsArticle, Context mContext) {
        this.mNewsArticle = mNewsArticle;
        this.mContext = mContext;
    }

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

    @Override
    public void onBindViewHolder(NewsAdapter.ViewHolder holder, int position) {
        holder.articleDesc.setText(mNewsArticle.get(position).getArticleDesc());
        holder.articleName.setText(mNewsArticle.get(position).getArticleName());
        holder.articleURL.setText(mNewsArticle.get(position).getArticleURLName());
        holder.articleDate.setText(dateConfiguration(mNewsArticle.get(position).getArticleDate()));

        Log.d(TAG, "onBindViewHolder: " + mNewsArticle.get(position).getArticleURLName());

        Picasso
                .with(mContext)
                .load(mNewsArticle.get(position).getArticleImageURL())
                .resize(380, 200)
                .into(holder.articleImage);

        holder.itemView.setOnClickListener(v -> IntentUtils.invokeToURL(mContext, mNewsArticle.get(position).getArticleURLLink()));
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private TextView articleName;
        private TextView articleDesc;
        private TextView articleURL;
        private ImageView articleImage;
        private TextView articleDate;

        public ViewHolder(View itemView) {

            super(itemView);

            articleName = itemView.findViewById(R.id.article_title);
            articleDesc = itemView.findViewById(R.id.article_desc);
            articleImage = itemView.findViewById(R.id.article_image);
            articleURL = itemView.findViewById(R.id.article_url);
            articleDate = itemView.findViewById(R.id.article_date);
        }
    }

    public String dateConfiguration(String Date) {

        return Date.replace("T", " ").replace("Z", "");
    }

ОБНОВЛЕНИЕ: После проверки newsapi.org этоесть мои запросы.Странно то, что в эмуляторе работали onced, но теперь, даже если я стираю данные, делаю недействительной кеш и т. Д., Статьи все еще загружаются (старые).В физическом устройстве я получил сообщение mCheckNewsRecieved.setVisibility(View.VISIBLE);, как будто оно не удалось.

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