Dans mon application, je veux afficher les données récupérées du serveur.
Je veux filtrer les données sur vue recycleur basé sur Won attributComment traiter et filtrer les éléments de la liste avant de passer à recyclerView sur Android
Plus précisément, par défaut Afficher tous les articles correspondant à « won = false » à moins que « won = true » trouvé, si-moins un élément avec « won = true "trouvés, afficher uniquement" won = true "éléments.
Comment vérifier si la liste contient atleast une structure de données élément a une valeur vrai pour l'attribut gagné.
J'écris les codes ci-dessous pour montrer toutes les données.
Mes codes Adaptateur:
public class AwardModelAdater extends RecyclerView.Adapter<AwardModelAdater.ViewHolder> {
private Context context;
private List<Award> model;
private int modelImage;
public AwardModelAdater(Context context, List<Award> model) {
this.context = context;
this.model = model;
}
@Override
public AwardModelAdater.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_award, parent, false);
return new AwardModelAdater.ViewHolder(view);
}
@Override
public void onBindViewHolder(final AwardModelAdater.ViewHolder holder, final int position) {
if (model.get(position).getWon()) {
modelImage = R.drawable.golden_globe_gold;
} else {
modelImage = R.drawable.golden_globe_silver;
}
if (model.get(position).getWon()) {
Glide.with(context)
.load(modelImage)
.placeholder(R.drawable.default_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.row_awardImg);
} else {
Glide.with(context)
.load(modelImage)
.placeholder(R.drawable.default_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.row_awardImg);
}
}
@Override
public int getItemCount() {
return model.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView row_awardImg;
public ViewHolder(View itemView) {
super(itemView);
row_awardImg = (ImageView) itemView.findViewById(R.id.row_awardImg);
}
}
}
Mon code d'activité:
SendData = new SerialDetailSendData();
SendData.setSeriesID(serialID);
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<SeriesAwardResponse> call = api.getSeriesAward(SendData);
call.enqueue(new Callback<SeriesAwardResponse>() {
@Override
public void onResponse(Call<SeriesAwardResponse> call, Response<SeriesAwardResponse> response) {
if (response.body().getData() != null) {
awardModel.clear();
awardModel.addAll(response.body().getData().get(0).getAwards());
awardModelAdapter = new AwardModelAdater(context, awardModel);
//dialogList_loadingProgress.hide();
infoSerialFrag_AwardAcademyRecyclerView.setHasFixedSize(true);
infoSerialFrag_AwardAcademyRecyclerView.setAdapter(awardModelAdapter);
}
}
@Override
public void onFailure(Call<SeriesAwardResponse> call, Throwable t) {
//dialogList_loadingProgress.hide();
}
});
classe Prix:
public class Award {
@SerializedName("description")
@Expose
private String description;
@SerializedName("year")
@Expose
private Integer year;
@SerializedName("celebrity")
@Expose
private Celebrity celebrity;
@SerializedName("won")
@Expose
private Boolean won;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
public Celebrity getCelebrity() {
return celebrity;
}
public void setCelebrity(Celebrity celebrity) {
this.celebrity = celebrity;
}
public Boolean getWon() {
return won;
}
public void setWon(Boolean won) {
this.won = won;
}
}
où vous gonflez toutes ces données sur la mise en page, puis vérifiez d'abord la condition. si Won est faux alors mettez leur visibilité GONE else Faites leur visibilité VISIBLE –
@nihal_softy, pouvez-vous m'envoyer du code avec mes codes ci-dessus? S'il vous plaît – Jong
Cela entraînerait une surcharge inutile sur la création de vue, puis de rendre invisible! – Mani