【发布时间】:2017-07-24 07:27:40
【问题描述】:
在我的应用程序中,我想显示从服务器检索到的数据。
我想根据 Won 属性过滤回收站视图上的数据
具体来说,默认情况下显示所有匹配“won=false”的项目,除非找到“won=true”,如果至少找到一个“won=true”项目,则仅显示“won=true”项目。
如何检查列表数据结构是否包含至少一项属性 won 的值为 true。
我编写以下代码来显示所有数据。
我的适配器代码:
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);
}
}
}
我的活动代码:
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();
}
});
奖项类别:
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;
}
}
【问题讨论】:
-
您在 Layout 上夸大所有这些数据的位置,然后首先检查条件。如果 Won 为假,则将其可见性消失,否则使它们可见性可见
-
@nihal_softy,你能把我上面的代码发给我吗?请
-
这会导致视图创建不必要的开销,然后使其变为不可见!
-
@Mani 是的,你有点对,但问题是假设 use 想要在 won 为 false 时添加不同的逻辑。所以我必须在模型类中添加所有数据。
-
@nihal_softy:为此,我将提供另一种方法,该方法具有另一种 EMPTY_VIEW_TYPE 以用于满足条件标志的空视图类型会被夸大的情况
标签: android loops arraylist logic equals