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 puis-je remplir l'adaptateur dans 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? S'il vous plaît aidez-moi
nous montrer votre méthode onCreate où vous avez initialiser votre mAdapter. –