2017-05-02 8 views
1

アプリが起動し、ログを確認すると空白の画面が表示されます。 E/RecyclerView:アダプタが接続されていません。レイアウトエラーをスキップするE/RecyclerView:アダプターは接続されていません。レイアウトエラーをスキップ

私は理由を理解できませんか?任意のアイデアは、それはリサイクラーのビューを添付したり、任意のデータを追加するようではない、私は主な活動、DataAdapterとデータクラスを添付している。

主な活動

public class MainActivity extends AppCompatActivity { 

    private static final String BASE_URL = "http://demo3317540.mockable.io"; 


    private RecyclerView recyclerView; 
    private List<Included> data; 
    private Adapter adapter; 




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

     data = new ArrayList<>(); 

     initViews(); 
     loadJSON(); 

    } 

    private void initViews() { 

     recyclerView = (RecyclerView)findViewById(R.id.recyclerView); 
     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView.setLayoutManager(layoutManager); 

    } 

    private void loadJSON() { 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
     RequestInterface request = retrofit.create(RequestInterface.class); 
     Call<JsonResponse> call = request.getYesterData(); 
     call.enqueue(new Callback<JsonResponse>() { 
      @Override 
      public void onResponse(Call<JsonResponse> call, Response<JsonResponse> response) { 

       JsonResponse jsonResponse = response.body(); 
       data = new ArrayList<>(Arrays.asList(jsonResponse.getIncluded())); 
       adapter = new Adapter(data); 
       recyclerView.setAdapter(adapter); 



      } 

データアダプタ以下

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

     private List<Included> includedData; 


     public Adapter(List<Included> includedData) { 
      this.includedData = includedData; 

     } 


     @Override 
     public Adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int i) { 

      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 
      return new ViewHolder(view); 
     } 

     @Override 
     public void onBindViewHolder(ViewHolder holder, int position) { 


      holder.tvCompetitionName.setText(includedData.get(position).getAttributes().getName()); 
      holder.homeTeam.setText(includedData.get(position).getRelationships().getCompetition().getData().getType()); 



      holder.itemView.setTag(includedData.get(position)); 

     } 

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

     } 

     @Override 
     public long getItemId(int position) { 

      return position; 
     } 

     @Override 
     public int getItemViewType(int position) { 
      return position; 
     } 

     public class ViewHolder extends RecyclerView.ViewHolder { 

      private TextView tvCompetitionName; 
      private TextView homeTeam; 
      private TextView score; 

      public ViewHolder(View itemView) { 
       super(itemView); 

       tvCompetitionName = (TextView) itemView.findViewById(R.id.competitionNameTV); 
       homeTeam = (TextView) itemView.findViewById(R.id.homeTeamTv); 
       score = (TextView) itemView.findViewById(R.id.score); 
      } 
     } 
} 

あるデータは Included.java

から引き出さ取得される私のデータクラス

ゲッターとセッター

これはインタフェース

public class JsonResponse { 

    private Included[] included; 

    public Included[] getIncluded() { 
     return included; 
    } 
} 

理解すべてのヘルプで参照されるjsonResponseクラスです。あなたは、アダプタを初期化し、recyclerview.setAdapter(アダプタ)を呼び出す必要が

答えて

0

+0

私はあなたが主な活動をチェックする場合は、あなたの他のRecyclerViewの初期化と一緒に同期して初期化する必要があり – BigC3886

+0

それがそこに呼ばれて、それを呼び出してください。クラスの変数として空のアダプターを設定し、それをRecyclerViewに追加してから、後で(ネットワーク要求が応答を返すときに)データを追加します。 –

関連する問題