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(アダプタ)を呼び出す必要が
私はあなたが主な活動をチェックする場合は、あなたの他のRecyclerViewの初期化と一緒に同期して初期化する必要があり – BigC3886
それがそこに呼ばれて、それを呼び出してください。クラスの変数として空のアダプターを設定し、それをRecyclerViewに追加してから、後で(ネットワーク要求が応答を返すときに)データを追加します。 –