Respons JSON tidak dapat dibaca di kelas adaptor tetapi terlihat di logcat menggunakan pustaka http retrofit

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;
} }

person Kalam Taufiq    schedule 19.10.2018    source sumber
comment
Bisakah Anda memposting beberapa login diBindViewHolder?   -  person aolphn    schedule 19.10.2018
comment
Saya telah menambahkan log di onBindViewHolder tetapi tidak muncul di logcat   -  person Kalam Taufiq    schedule 19.10.2018
comment
Jadi saya kira adaptor Anda tidak benar-benar berfungsi, apakah ada kesalahan log di konsol logcat Anda?   -  person aolphn    schedule 19.10.2018
comment
Saran saya:1. buat daftar dan tambahkan beberapa data ke dalamnya lalu setel daftar ke adaptor Anda, 2. periksa apakah berfungsi dengan baik   -  person aolphn    schedule 19.10.2018
comment
@KalamTaufiq jika getItemCount() mengembalikan hitungan sebagai 0 di kelas adaptor, kelas adaptor tidak akan mengeksekusi kode lebih lanjut. Jadi, login ke dalam onBindViewHolder() tidak akan membantu Anda men-debug kode. Periksa jawaban @Mujahid Khan di bawah untuk solusinya.   -  person Shashanth    schedule 20.10.2018


Jawaban (1)


mengapa getItemCount adalah 0? itu akan membuat tampilan pendaur ulang tidak membaca daftar. Jadi dalam metode getItemCount tulis, return ekonomis.size();

person Mujahid Khan    schedule 19.10.2018