2021年3月12日星期五

E/RecyclerView: No adapter attached; skipping layout and view 0 at recyclerview and not showing recyclerview

I found some error, while show data at recyclerview it's not showing data. only showing 0. after that layout recycler is showing but data null

here StatistikActivty to show recyclerview

public class StatistikActivity extends AppCompatActivity {        ImageView back;      EditText etedit;      private ProgressBar progressBar;      private RecyclerView rcdata;      private static final String STATS_URL = "https://api.covid19api.com/summary";      ArrayList<ModelData> dataArrayList;      AdapterData adapterData;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_statistik);            back = findViewById(R.id.imageView16);          progressBar = findViewById(R.id.progresbar);          etedit = findViewById(R.id.etedit);          rcdata = findViewById(R.id.recystat);          rcdata.setLayoutManager(new LinearLayoutManager(this));          dataArrayList = new ArrayList<>();          adapterData = new AdapterData(this, dataArrayList);          rcdata.setAdapter(adapterData);          rcdata.setHasFixedSize(true);          progressBar.setVisibility(View.GONE);            prosesdata();            etedit.addTextChangedListener(new TextWatcher() {              @Override              public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {                }                @Override              public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {                    try{                      adapterData.getFilter().filter(charSequence);                  }                  catch (Exception e){                      e.printStackTrace();                  }              }                @Override              public void afterTextChanged(Editable editable) {                }          });            back.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View view) {                  onBackPressed();              }          });      }        @Override      public void onResume() {          super.onResume();          prosesdata();      }        private void prosesdata(){            progressBar.setVisibility(View.VISIBLE);            StringRequest stringRequest = new StringRequest(Request.Method.GET, STATS_URL, new Response.Listener<String>() {              @Override              public void onResponse(String response) {                  handlerespon(response);              }          }, new Response.ErrorListener() {              @Override              public void onErrorResponse(VolleyError error) {                  progressBar.setVisibility(View.GONE);                  Toast.makeText(StatistikActivity.this, ""+error.getMessage(), Toast.LENGTH_SHORT).show();              }          });            RequestQueue requestQueue = Volley.newRequestQueue(this);          requestQueue.add(stringRequest);      }        private void handlerespon(String response) {            dataArrayList = new ArrayList<>();          dataArrayList.clear();            try {              JSONObject jsonObject = new JSONObject(response);              JSONArray jsonArray = jsonObject.getJSONArray("Countries");                GsonBuilder gsonBuilder = new GsonBuilder();              gsonBuilder.setDateFormat("dd/MM/yyyy hh:mm a");              Gson gson = gsonBuilder.create();                for (int i=0; i<jsonArray.length(); i++){                  ModelData modelData = gson.fromJson(jsonArray.getJSONObject(i).toString(), ModelData.class);                  dataArrayList.add(modelData);              }               // adapterData = new AdapterData(this, dataArrayList);              //rcdata.setAdapter(adapterData);              rcdata.setHasFixedSize(true);              adapterData.notifyDataSetChanged();                progressBar.setVisibility(View.GONE);            }          catch (Exception e){              progressBar.setVisibility(View.GONE);              Toast.makeText(this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();          }      }        public class Urutan implements Comparator<ModelData> {          @Override          public int compare(ModelData modelData, ModelData t1) {              return modelData.getCountry().compareTo(t1.getCountry());          }      }  }  

here AdapterData

    public class AdapterData extends RecyclerView.Adapter<AdapterData.RecyclerHolder> implements Filterable {        private Context context;      public ArrayList<ModelData> dataArrayList, searchdat;      private Searchdata searchdata;        public AdapterData(Context context, ArrayList<ModelData> dataArrayList) {          this.context = context;          this.dataArrayList = dataArrayList;          this.searchdat = dataArrayList;      }        @NonNull      @Override      public RecyclerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {          View view = LayoutInflater.from(context).inflate(R.layout.list_stat, parent, false);            return new RecyclerHolder(view);      }        @Override      public void onBindViewHolder(@NonNull RecyclerHolder holder, int position) {          ModelData modelData = dataArrayList.get(position);            String Country = modelData.getCountry();          String TotalConfirmed = modelData.getTotalConfirmed();          String NewConfirmed = modelData.getNewConfirmed();          String TotalDeaths = modelData.getTotalDeaths();          String NewDeaths = modelData.getNewDeaths();          String TotalRecovered = modelData.getTotalRecovered();          String NewRecovered= modelData.getNewRecovered();            holder.negara.setText(Country);          holder.totalpositif.setText(TotalConfirmed);          holder.positifbaru.setText(NewConfirmed);          holder.totalmati.setText(TotalDeaths);          holder.matihariini.setText(NewDeaths);          holder.totalsembuh.setText(TotalRecovered);          holder.sembuhhariini.setText(NewRecovered);      }        @Override      public int getItemCount() {          return dataArrayList.size();      }        @Override      public Filter getFilter() {          if(searchdata == null) {              searchdata = new Searchdata(this, searchdat);          }          return searchdata;      }        class RecyclerHolder extends RecyclerView.ViewHolder{            TextView negara, totalpositif, positifbaru, totalmati, matihariini, totalsembuh, sembuhhariini;            public RecyclerHolder(@NonNull View itemView) {              super(itemView);                negara = itemView.findViewById(R.id.negara);              totalpositif = itemView.findViewById(R.id.negara);              positifbaru = itemView.findViewById(R.id.negara);              totalmati = itemView.findViewById(R.id.negara);              matihariini = itemView.findViewById(R.id.negara);              totalsembuh = itemView.findViewById(R.id.negara);              sembuhhariini = itemView.findViewById(R.id.negara);            }      }  }  

here Searchdata

    public class Searchdata extends Filter {        private AdapterData adapterData;      private ArrayList<ModelData> searchdat;        public Searchdata(AdapterData adapterData, ArrayList<ModelData> searchdat) {          this.adapterData = adapterData;          this.searchdat = searchdat;      }        @Override      protected FilterResults performFiltering(CharSequence c) {            FilterResults results = new FilterResults();            if(c != null && c.length() >0){                c = c.toString().toUpperCase();              ArrayList<ModelData> modelDataArrayList = new ArrayList<>();              for(int i=0; i<searchdat.size(); i++){                  if(searchdat.get(i).getCountry().toUpperCase().contains(c)){                      modelDataArrayList.add(searchdat.get(i));                  }              }                results.count = modelDataArrayList.size();              results.values = modelDataArrayList;          } else {              results.count = searchdat.size();              results.values = searchdat;          }            return results;      }        @Override      protected void publishResults(CharSequence charSequence, FilterResults results) {          adapterData.dataArrayList = (ArrayList<ModelData>) results.values;            adapterData.notifyDataSetChanged();        }  }  

please help me, thank you

https://stackoverflow.com/questions/66600253/e-recyclerview-no-adapter-attached-skipping-layout-and-view-0-at-recyclerview March 12, 2021 at 08:51PM

没有评论:

发表评论