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
没有评论:
发表评论