2017-05-18 15 views
1

私はRetrofit、ピカソとrecyclerviewを使用しています。しかし、以下のエラーが来ている。Stackoverflowエラー

プロセス:com.example.user.recyclerview、PID:4871 によってjava.lang.StackOverflowError

MainActivity.class

public class MainActivity extends AppCompatActivity 
{ 
private RecyclerView recyclerView; 
private DataAdapter dataAdapter; 
private List<ModelData> modelDataList; 

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

    recyclerView = (RecyclerView) findViewById(R.id.card_recycle_view); 
    recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    getPopularMovies(); 
} 

private void getPopularMovies() 
{ 
    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("http://pratikbutani.x10.mx") 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    RetrofitInterface service = retrofit.create(RetrofitInterface.class); 
    Call<ModelDataList> call =service.getJSON(); 

    call.enqueue(new Callback<ModelDataList>() 
    { 
     @Override 
     public void onResponse(Call<ModelDataList> call, Response<ModelDataList> response) 
     { 
      ModelDataList modelDataList = response.body(); 
      dataAdapter = new DataAdapter(modelDataList.getResults()); 
      recyclerView.setAdapter(dataAdapter); 
     } 

     @Override 
     public void onFailure(Call<ModelDataList> call, Throwable t) 
     { 
      Log.d("Main","failure"); 
     } 
    }); 
    } 
} 

ModelDataList.java

public class ModelDataList 
    { 
    private List<ModelData> results; 

public List<ModelData> getResults() 
{ 
    return results; 
} 
} 

DataAdapter.java

 public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> 
    { 
      private List<ModelData> modelDataList; 
      private LayoutInflater layoutInflater; 
      private Context context; 

public DataAdapter(List<ModelData> modelDataList) 
{ 
    this.context = new AppCompatActivity(); 
    this.modelDataList = modelDataList; 
    this.layoutInflater = LayoutInflater.from(context); 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
{ 
    View view = layoutInflater.inflate(R.layout.card_view, parent, false); 
    ViewHolder viewHolder = new ViewHolder(view); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 
    ModelData modelData = modelDataList.get(position); 
    holder.textView.setText(modelData.getName()); 
    Picasso.with(context).load(String.valueOf(modelData.getDisplay_pic())).placeholder(R.color.colorAccent).into(holder.imgview); 
} 

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

public class ViewHolder extends RecyclerView.ViewHolder 
{ 
    private ImageView imgview; 
    private TextView textView; 

    public ViewHolder(View itemView) 
    { 
     super(itemView); 
     imgview = (ImageView) itemView.findViewById(R.id.tv_image); 
     textView = (TextView) itemView.findViewById(R.id.tv_name); 
    } 
} 
    } 
+0

インターネットアクセス許可を追加しましたか? – MAOL

+0

インターネット許可が追加されました – Anonymous

答えて

0

StackOverflowErrorの問題について不明です。 1つの問題は、どのようにコンテキストを取得するかです。 「this.context = new AppCompatActivity();」ではなく、ビューからコンテキストを取得できます。 例: LayoutInflater.from(parent.getContext())。inflate(R.layout.card_view、parent、false);Picasso.with(holder.imgview.getContext())。load(String.valueOf(modelData.getDisplay_pic()))プレースホルダー(R.color.colorAccent).into(holder.imgview);

+0

まだ試したことがあります – Anonymous

関連する問題