1
votes

application montrant un écran blanc vide sur l'émulateur

Je développe une application Android d'actualités sportives, mais lorsque je l'exécute, elle affiche un écran blanc capture d'écran de emulator .

sous ma classe d'adaptateur

classe publique ArticleAdapter étend RecyclerView.Adapter {

{
    "status": "ok",
    "totalResults": 10,
    "articles": [
        {
            "source": {
                "id": "bbc-sport",
                "name": "BBC Sport"
            },
            "author": "BBC Sport",
            "title": "Gordon Taylor: PFA chief executive set to step down after 38 years",
            "description": "Gordon Taylor to announce he will step down as chief executive of the Professional Footballers' Association (PFA) at the end of the season after 38 years.",
            "url": "http://www.bbc.co.uk/sport/football/47691299",
            "urlToImage": "https://ichef.bbci.co.uk/onesport/cps/624/cpsprodpb/13590/production/_97584297_breaking_news.png",
            "publishedAt": "2019-03-27T13:04:18Z",
            "content": "Gordon Taylor is set to announce he is standing down as chief executive of the Professional Footballers' Association after 38 years in the role.\r\nIt follows a mutiny from PFA chairman Ben Purkiss and former players over governance issues and controversy over … [+675 chars]"
        },
 ]
}

}

sous la classe d'interface Retrofit interface publique SportInterface {

@SerializedName("status")
@Expose
private String status;
@SerializedName("totalResults")
@Expose
private Integer totalResults;
@SerializedName("articles")
@Expose
private List<Article> articles = null;

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public Integer getTotalResults() {
    return totalResults;
}

public void setTotalResults(Integer totalResults) {
    this.totalResults = totalResults;
}

public List<Article> getArticles() {
    return articles;
}

public void setArticles(List<Article> articles) {
    this.articles = articles;
}

}

ci-dessous le client de rénovation

classe publique SportClient {

private SportNews sportNews;
private List<Article> articleList;

private ArticleAdapter articleAdapter;
@BindView(R.id.recyclerView)
RecyclerView recyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    SportInterface sportInterface = SportClient.getApiService();
    Call<SportNews> call = sportInterface.getArticles();
    call.enqueue(new Callback<SportNews>() {
        @Override
        public void onResponse(Call<SportNews> call, Response<SportNews> response) {
            sportNews =  response.body();
            articleAdapter = new ArticleAdapter( articleList, sportNews);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
            recyclerView.setLayoutManager(layoutManager);
            recyclerView.setAdapter(articleAdapter);
        }

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

        }
    });


}


3 commentaires

Connectez onFailure et vérifiez si vous recevez quelque chose


@HB avez-vous d'autres suggestions


Que voulez-vous dire par d'autres suggestions? Avez-vous vérifié onFailure ?


3 Réponses :


0
votes

votre problème est dans cette ligne

articleList=sportNews.getArticles();
articleAdapter = new ArticleAdapter( articleList, sportNews);

doit être remplacé par ceci

            articleAdapter = new ArticleAdapter( articleList, sportNews);


0 commentaires

0
votes

essayez ceci. Je pense que votre adaptateur est incorrect.

public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.CustomViewHolder> {


0 commentaires

1
votes

Bonjour, copiez simplement le code ci-dessous, car j'ai modifié votre classe MainActivity où vous avez oublié d'ajouter une liste à partir de l'objet sportNews auquel vous pouvez accéder en réponse à l'appel de l'API.

public class MainActivity extends AppCompatActivity {

private SportNews sportNews;
private List<Article> articleList = new ArrayList<Article>();

private ArticleAdapter articleAdapter;
@BindView(R.id.recyclerView)
RecyclerView recyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    SportInterface sportInterface = SportClient.getApiService();
    Call<SportNews> call = sportInterface.getArticles();
    call.enqueue(new Callback<SportNews>() {
        @Override
        public void onResponse(Call<SportNews> call, Response<SportNews> response) {
            sportNews =  response.body();
            if(sportNews != null && sportNews.getArticles() != null){
                articleList.addAll(sportNews.getArticles());
            }
            articleAdapter = new ArticleAdapter( articleList, sportNews);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
            recyclerView.setLayoutManager(layoutManager);
            recyclerView.setAdapter(articleAdapter);
        }

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

        }
    });

}
}


0 commentaires