2017-09-12 8 views
0

私はリサイクルビューを実装しています。私はretrofitを使用して、データを配列として返しますデータを配列としてjson
その後、私はforループ内にretrofitオブジェクトを実装していますlogatで私はデータは、モデルのデータを送信フェッチすることはできませんし、私はすべてのエラーメッセージ、ちょうど空白の画面 と、このメッセージを持っていない問題私はretrofitでデータを取得できません

E/RecyclerView:いいえアダプター付属。

レイアウトを飛ばし、これは私のmainActivityです:

public class MainActivity extends AppCompatActivity { 
    private RecyclerView recyclerView; 
    private ProgressBar progressBar; 
    private LinearLayoutManager mlinearLayout; 
    ArrayList<Model> list; 
    Adapter adapter; 
    String url = "https://d17h27t6h515a5.cloudfront.net/"; 


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

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     progressBar = (ProgressBar) findViewById(R.id.progressbar); 
     mlinearLayout = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); 
     recyclerView.setLayoutManager(mlinearLayout); 


     list = new ArrayList<>(); 

     getRetrofitArray(); 
     adapter=new Adapter(list ,MainActivity.this); 

     recyclerView.setAdapter(adapter); 

    } 

    public void getRetrofitArray() { 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(url) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
     RetrofitArrayAPI servese =retrofit.create(RetrofitArrayAPI.class); 
     Call< List<Recipe>> call=servese.getRecipeDetails(); 
     call.enqueue(new Callback<List<Recipe>>() { 
      @Override 
      public void onResponse(Call<List<Recipe>> call, Response<List<Recipe>> response) { 
       for(int i=0;i<response.body().size();i++){ 
        list.add(new Model(response.body().get(i).getName(),response.body().get(i).getServings(),Model.Image)); 

       } 
       adapter.notifyDataSetChanged(); 
      } 

      @Override 
      public void onFailure(Call<List<Recipe>> call, Throwable t) { 
       Log.e("main","retrifit error"+ t.toString()); 

      } 
     }); 

    } 

私modele

+0

あなたは、デバッグで試してみましたあなたのonResponseメソッド、あなたのresponse.body()は、任意のデータを持っているか、それは空のコレクションですか? – Avi

+0

レトロフィットビルダーにロギングを追加できますか?これにより、Webサービスからのレスポンスを確認できます。 – Audi

+1

@wad 'recyclerView.setAdapter(adapter);の後にこの' getRetrofitArray(); 'を呼び出そうとします – joao86

答えて

0

は一度これを試してみてください:

public class MainActivity extends AppCompatActivity { 
private RecyclerView recyclerView; 
private ProgressBar progressBar; 
private LinearLayoutManager mlinearLayout; 
ArrayList<Model> list; 
Adapter adapter; 
String url = "https://d17h27t6h515a5.cloudfront.net/"; 


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

    list = new ArrayList<>(); 
    recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
    progressBar = (ProgressBar) findViewById(R.id.progressbar); 
    mlinearLayout = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); 
    recyclerView.setLayoutManager(mlinearLayout); 
    adapter=new Adapter(list ,MainActivity.this); 
    recyclerView.setAdapter(adapter); 

    getRetrofitArray(); 

} 

public void getRetrofitArray() { 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(url) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 
    RetrofitArrayAPI servese =retrofit.create(RetrofitArrayAPI.class); 
    Call< List<Recipe>> call=servese.getRecipeDetails(); 
    call.enqueue(new Callback<List<Recipe>>() { 
     @Override 
     public void onResponse(Call<List<Recipe>> call, Response<List<Recipe>> response) { 
      list=response.body(); 
      adapter.notifyDataSetChanged(); 
     } 

     @Override 
     public void onFailure(Call<List<Recipe>> call, Throwable t) { 
      Log.e("main","retrifit error"+ t.toString()); 

     } 
    }); 

} 

これはFOを動作するかどうか私に知らせてあなた。

例えば
-1

あなたは、アダプタ内のデータを変更したいときは、その後notifyDataSetChanged(呼び出しアダプタでのデータのためのsetterメソッドでそれを変更する必要があります)

list = getNewData(); 
adapter.setData(list); //need to set every time that data was changed 
adapter.notifyDataSetChanged(); 
+1

質問は、データは利用できません、その後は爽やかな景色が見えます –

関連する問題