Je veux obtenir des données du serveur et le montrer dans Recyclerview
. Je peux montrer ces données, mais un certain temps ne montre pas ces données et montre simplement progressBar.
Je montre ces données dans Log.e
et montre rapidement, mais ne montre pas ces données dans RecyclerView
et montre simplement Progress.
S'il vous plaît voir image ci-dessous pour connaître ma moyenne:
Click too seeComment définir des données dans RecyclerView sur Android
Mes codes de réponse:
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<CountryResponse> call = api.getCountryList();
call.enqueue(new Callback<CountryResponse>() {
@Override
public void onResponse(Call<CountryResponse> call, Response<CountryResponse> response) {
try {
if (response.body() != null) {
models.clear();
models.addAll(response.body().getData());
for (int i = 0; i <= models.size(); i++) {
Log.e("CountryInfoTAG", response.body().getData().get(i).getId() + " : " +
response.body().getData().get(i).getName());
}
countryProgress.setVisibility(View.GONE);
countryRecycler.setAdapter(mAdapter);
}
} catch (Exception e) {
}
}
@Override
public void onFailure(Call<CountryResponse> call, Throwable t) {
Toasty.error(context, context.getResources().getString(R.string.failRequest),
Toast.LENGTH_LONG, true).show();
}
});
codes Adaptateur:
public class CountryAdapter extends RecyclerView.Adapter {
private List<CountryDatum> mData;
private Context context;
private sendDataListener listner;
public CountryAdapter(List<CountryDatum> mData, Context context, sendDataListener listner) {
this.mData = mData;
this.context = context;
this.listner = listner;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder vh;
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_country, parent, false);
vh = new DataViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof DataViewHolder) {
((DataViewHolder) holder).countryListTxt.setText(mData.get(position).getName() + "");
((DataViewHolder) holder).countryListTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listner.onSendIdName(mData.get(position).getId(), mData.get(position).getName());
if (context instanceof RegisterActivity) {
((RegisterActivity) context).dismissCountryDialog();
}
}
});
}
}
@Override
public int getItemCount() {
return mData.size();
}
public void add(List<CountryDatum> models) {
mData.addAll(models);
notifyDataSetChanged();
}
public void clear() {
mData.clear();
notifyDataSetChanged();
}
public class DataViewHolder extends RecyclerView.ViewHolder {
private TextView countryListTxt;
public DataViewHolder(View itemView) {
super(itemView);
countryListTxt = (TextView) itemView.findViewById(R.id.countryNameTxt);
}
}
}
Comment puis-je résoudre ce problème? Aidez-moi, s'il vous plaît. Comment puis-je résoudre ce problème? aidez-moi s'il vous plaît
cela dépend de la vitesse de connexion Internet, quelques fois il prend plus de temps en raison du réseau lent, et la raison pour l'affichage rapide des données dans logcat est que dans logcat vous êtes juste montrer des données dans le terminal, où comme dans la vue recycleur il y a une interface utilisateur, et il affichera des données lorsque toutes les données sont peuplées –
@AbdulKawee, si la vitesse de la connexion Internet est lente ne montre pas les données dans LogCat! pourquoi montrer dans logcat et ne pas montrer dans recyclerview? Comment puis-je accélérer l'affichage des données dans recyclerview? Pouvez-vous m'aider? – Dongle
Vérifiez la ligne de votre code dans la boucle, c'est-à-dire avec chaque enregistrement que le journal affichera dès que l'enregistrement est reçu, où comme dans la vue recycleur, il affichera uniquement les données quand il est complètement reçu –