Java 在模拟器上显示空白屏的应用程序

Java 在模拟器上显示空白屏的应用程序,java,android,android-recyclerview,retrofit2,Java,Android,Android Recyclerview,Retrofit2,我正在开发体育新闻android应用程序,但当我运行该应用程序时,它会显示白色屏幕 在我的适配器类下面 公共类ArticleAdapter扩展了RecyclerView.Adapter{ private List<Article> articles; public ArticleAdapter(List<Article> articles, SportNews sportNews) { this.articles = articles; } @NonNull

我正在开发体育新闻android应用程序,但当我运行该应用程序时,它会显示白色屏幕

在我的适配器类下面

公共类ArticleAdapter扩展了RecyclerView.Adapter{

private List<Article> articles;

public ArticleAdapter(List<Article> articles, SportNews sportNews) {
    this.articles = articles;

}

@NonNull
@Override
public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View itemView = (View) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.article_list, null);
    return new CustomViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull CustomViewHolder customViewHolder, int position) {
    Article article = articles.get(position);
    customViewHolder.articleAuthor.setText(article.getAuthor());
    customViewHolder.articleTitle.setText(article.getTitle());
    Picasso.get().load(article.getUrlToImage()).into(customViewHolder.articleImage);

}


@Override
public int getItemCount() {
    if(articles == null) return 0;
    return articles.size();
}

public class CustomViewHolder extends RecyclerView.ViewHolder {
    @BindView(R.id.articleAuthor)
    TextView articleAuthor;
    @BindView(R.id.articleTitle)
    TextView articleTitle;
    @BindView(R.id.articleImage)
    ImageView articleImage;


    public CustomViewHolder(View view) {
        super(view);
        ButterKnife.bind(this, view);


    }
}
}

下面是MainActivity.java

公共类MainActivity扩展了AppCompatActivity{

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) {

        }
    });


}

你的问题就在那一行

            articleAdapter = new ArticleAdapter( articleList, sportNews);
应该换成这个

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

试试这个。我想你的适配器错了

public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.CustomViewHolder> {
公共类ArticleAdapter扩展了RecyclerView.Adapter{
您好,请复制代码下方的粘贴,因为我编辑了您的MainActivity类,您忘记添加sportNews对象中的列表,您可以通过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) {

        }
    });

}
}
public类MainActivity扩展了AppCompatActivity{
私人体育新闻;
private List articleList=新建ArrayList();
专用条款适配器;
@BindView(R.id.recyclerView)
回收视图回收视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
把(这个)绑起来;
SportInterface SportInterface=SportClient.getApiService();
Call Call=sportInterface.getArticles();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
sportNews=response.body();
if(sportNews!=null&&sportNews.getArticles()!=null){
articleList.addAll(sportNews.getArticles());
}
articleAdapter=新的articleAdapter(articleList,sportNews);
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(articleAdapter);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
}

Log
onFailure
并检查是否收到anything@HB您还有其他建议吗?其他建议是什么意思?您是否检查了故障时的
            articleAdapter = new ArticleAdapter( articleList, sportNews);
articleList=sportNews.getArticles();
articleAdapter = new ArticleAdapter( articleList, sportNews);
public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.CustomViewHolder> {
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) {

        }
    });

}
}