2017-05-22 1 views
0

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

+0

nous montrer votre méthode onCreate où vous avez initialiser votre mAdapter. –

Répondre

0
countryProgress.setVisibility(View.GONE); 
countryRecycler.setAdapter(mAdapter); 
mAdapter.notifyDataSetChanged(); 
+0

Ne fonctionne pas encore moi :( –

+1

@TomDuan, vous devriez fournir une brève explication de votre réponse. – lmiguelvargasf

0

vous oublie mAdapter.add (modèles) après avoir ajouté toutes les données dans les modèles

 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); 
      mAdapter.add(models); 
     } 
+0

Je l'ajoute, et ne pas montrer à nouveau: ( –

+0

Ne fonctionne pas pour moi :( –