Saya telah mengikuti panduan dari https://www.androidhive.info/2016/05/android-working-with-retrofit-http-library/ untuk mendapatkan respons json. Namun responsnya tidak muncul di RecyclerView setelah diurai pada kelas Adaptor. Namun respon JSON terlihat di logcat yang saya buat. Silakan periksa skrip saya di bawah ini:
EkonomiFragment.java
final RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerViewEkonomi);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext().getApplicationContext()));
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<EkonomiResponse> call = apiService.getEkonomi(rssUrlE);
call.enqueue(new Callback<EkonomiResponse>(){
@Override
public void onResponse(Call<EkonomiResponse> call, Response<EkonomiResponse> response){
List<Ekonomi> ekonomis = response.body().getItems();
for(int x=0; x<ekonomis.size(); x++){
Log.i("Judul", ekonomis.get(x).getTitle());
}
Log.d(TAG, "JSON Ekonomi: " + ekonomis);
//Toast.makeText(rootView.getContext(), "Berhasil", Toast.LENGTH_LONG).show();
recyclerView.setAdapter(new EkonomiAdapter(ekonomis, R.layout.list_item_berita_e, rootView.getContext()));
//recyclerView.setAdapter(new EkonomiAdapter(ekonomis, R.layout.list_item_berita_e, rootView.getContext()));
}
@Override
public void onFailure(Call<EkonomiResponse> call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
Toast.makeText(rootView.getContext(), "Gagal", Toast.LENGTH_LONG).show();
}
});
EkonomiAdapter.java
public class EkonomiAdapter extends RecyclerView.Adapter<EkonomiAdapter.EkonomiViewHolder>{
private List<Ekonomi> ekonomis;
private int rowLayout;
private Context context;
public static class EkonomiViewHolder extends RecyclerView.ViewHolder {
CardView ekonomiLayout;
TextView newsTitle;
TextView pubDate;
WebView newsDescription;
public EkonomiViewHolder(View v) {
super(v);
ekonomiLayout = (CardView) v.findViewById(R.id.berita_layout_e);
newsTitle = (TextView) v.findViewById(R.id.title_e);
pubDate = (TextView) v.findViewById(R.id.pubDate_e);
newsDescription = (WebView) v.findViewById(R.id.description_e);
}
}
public EkonomiAdapter(List<Ekonomi> ekonomis, int rowLayout, Context context) {
this.ekonomis = ekonomis;
this.rowLayout = rowLayout;
this.context = context;
}
@NonNull
@Override
public EkonomiViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
return new EkonomiViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull EkonomiViewHolder holder, int position) {
Log.i("JSON", ekonomis.get(position).getTitle());
holder.newsTitle.setText(ekonomis.get(position).getTitle());
holder.pubDate.setText(ekonomis.get(position).getPubDate());
holder.newsDescription.getSettings().setJavaScriptEnabled(true);
holder.newsDescription.loadData(ekonomis.get(position).getDescription(), "text/html; charset=utf-8", "UTF-8");
}
@Override
public int getItemCount() {
return 0;
} }
getItemCount()
mengembalikan hitungan sebagai 0 di kelas adaptor, kelas adaptor tidak akan mengeksekusi kode lebih lanjut. Jadi, login ke dalamonBindViewHolder()
tidak akan membantu Anda men-debug kode. Periksa jawaban @Mujahid Khan di bawah untuk solusinya. - person Shashanth   schedule 20.10.2018