gpt4 book ai didi

android - 添加页脚 View 后在回收站 View 中仅显示一项

转载 作者:行者123 更新时间:2023-11-29 00:52:18 29 4
gpt4 key购买 nike

我正在使用 recycerview 来显示我的数据。在 recyclerview 中,我使用了两个 View 持有者,一个用于获取回收项目,另一个用于回收者 View 中的页脚布局。 arraylist 中只有一项正在显示...我尝试在 getItemViewType() 中更改条件通过这个,我得到了一些案例,1.在数组列表和页脚 View 中显示一项2.显示数组列表中的所有项目但没有页脚 View

 private static final int TYPE_FOOTER=1;
private static final int TYPE_ITEM=2;

这是我的 oncreateViewHolder,

 public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if(viewType==TYPE_ITEM) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View view = layoutInflater.inflate(R.layout.details_recycler_view_item, parent, false);
return new ItemViewHolder(view);
}
else if(viewType==TYPE_FOOTER) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View listItem = layoutInflater.inflate(R.layout.recycler_footer_view, parent, false);
FooterViewHolder viewHolder = new FooterViewHolder(listItem);
return viewHolder;
}
else return null;
}

这是我的onbindviewholder,在 objectArrayList 我有 2 个对象。但它只显示第一个对象中存在的数据。

  public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if(holder instanceof ItemViewHolder) {
ItemViewHolder viewHolder = (ItemViewHolder) holder;
AndroidLogger.log(5,TAG,"position"+position);
DetailsObject data = objectArrayList.get(position);
viewHolder.nameTextView.setText(data.name());
viewHolder.validTextView.setText(data.getValue());
viewHolder.activeButton.setText("Active");
viewHolder.image.setImageBitmap(photo);

}
else if(holder instanceof FooterViewHolder) {
FooterViewHolder footerViewHolder=(FooterViewHolder) holder;
DetailsObject data = objectArrayList.get(position);
if (data != null) {
footerViewHolder.rateTextView.setText(data.getRate() );
footerViewHolder.rentTextView.setText(data.getRent() );
footerViewHolder.billTextView.setText(data.getBill() );


}
}
}
 @Override
public int getItemCount() {
return objectArrayList.size();
}
@Override
public int getItemViewType(int position) {
if (position==objectArrayList.size()-1)
return TYPE_FOOTER;
return TYPE_ITEM;
}

请任何人调查我的问题并帮助我解决这个问题..我真的无法找出问题所在。我试图在很长一段时间前找到解决方案,直到现在找不到解决方案。

最佳答案

在将此 objectArrayList 传递给适配器之前,您必须将页脚的对象添加到 objectArrayList,然后

@Override
public int getItemCount() {
return objectArrayList.size();
}

@Override
public int getItemViewType(int position) {
return position == objectArrayList.size() - 1 ? TYPE_FOOTER : TYPE_ITEM;
}

在适配器中,你不应该在没有 else 语句的情况下留下 if 语句

public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

DetailsObject data = objectArrayList.get(position);

if (getItemViewType(position) == TYPE_ITEM) {
ItemViewHolder viewHolder = (ItemViewHolder) holder;
AndroidLogger.log(5, TAG, "position: " + position);
viewHolder.nameTextView.setText(data.name());
viewHolder.validTextView.setText(data.getValue());
viewHolder.activeButton.setText("Active");
viewHolder.image.setImageBitmap(photo);
} else {
FooterViewHolder footerViewHolder=(FooterViewHolder) holder;
if (data != null) {
footerViewHolder.rateTextView.setVisibility(true);
footerViewHolder.rateTextView.setText(data.getRate());
footerViewHolder.rentTextView.setVisibility(true);
footerViewHolder.rentTextView.setText(data.getRent());
footerViewHolder.billTextView.setVisibility(true);
footerViewHolder.billTextView.setText(data.getBill());
} else {
AndroidLogger.log(5, TAG, "this is null in position: " + position);
footerViewHolder.rateTextView.setVisibility(false);
footerViewHolder.rentTextView.setVisibility(false);
footerViewHolder.billTextView.setVisibility(false);
}
}
}

关于android - 添加页脚 View 后在回收站 View 中仅显示一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202978/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com