gpt4 book ai didi

java - 带有部分的 Recyclerview,但每个部分仅带有页脚

转载 作者:行者123 更新时间:2023-12-01 09:42:25 25 4
gpt4 key购买 nike

大家好,

我有一个 Recyclerview,第一次加载时即可实现我想要的结果,该结果将特定卖家正在销售的所有交易分组。

示例:

<小时/>
  • 鲍勃卖 watch 。
  • 鲍勃卖一辆车。
  • 鲍勃卖一匹马。
  • 用于删除所有 Bob 交易的按钮


  • 吉姆卖房子。

  • 吉姆卖一只猴子。
  • 用于删除所有 Jim 交易的按钮

示例:

enter image description here

问题是当我开始滚动回收器 View 时,项目行就会混淆。

我这样做的方式是,我有一个单一布局,其中包含一个垂直线性布局,并且在 LinearLayout 下方有一个绿色按钮。

现在,我以编程方式膨胀每行的 View ,然后设置该行的数据。

A Row

这是我的 onBindViewHolder:

      @Override
public void onBindViewHolder(final ParentCartResultsViewHolder holder, int position) {

final LinkedHashMap<Long, List<Trade>> mapTradesBySeller = CartUtils.getUserToFixedPriceTradeMap();
mTradesBySeller = (new ArrayList<>(mapTradesBySeller.values())).get(holder.getAdapterPosition());

if (mTradesBySeller != null) {
for (Trade trade : mTradesBySeller) {
View singleTrade = LayoutInflater.from(MyApplication.getAppContext()).inflate(R.layout.item_trade_details_include_row, holder.mLinearLayout, false);
TextView tradeTitle = (TextView) singleTrade.findViewById(R.id.trade_details_include_trade_title);
tradeTitle.setText(trade.getTitle());
TextView endDate = (TextView) singleTrade.findViewById(R.id.trade_details_include_trade_ending_time);
endDate.setText(trade.getUserAlias() + " : " + trade.getUserId());
holder.mLinearLayout.addView(singleTrade);
}
}
}

我的onCreateViewHolder:

      @Override
public ParentCartResultsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cart_grouped_by_seller, parent, false);
return new ParentCartResultsViewHolder(v);
}

现在我想我知道问题是什么,只是我不知道如何解决它。

问题是创建 View 并将它们添加到 LinearLayout 是在 onBindViewHolder 中,因为这会运行多次

最佳答案

您可以使用库 SectionedRecyclerViewAdapter轻松地将数据分组并为每个部分添加页脚。

首先创建一个Section类:

class TradeSection extends StatelessSection {

List<String> list;

public TradeSection(List<String> list) {
// call constructor with layout resources for this Section header, footer and items
super(-1, R.layout.section_item, R.layout.section_footer);

// remove header
this.setHasHeader(false);

this.list = list;
}

@Override
public int getContentItemsTotal() {
return list.size(); // number of items of this section
}

@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
// return a custom instance of ViewHolder for the items of this section
return new MyItemViewHolder(view);
}

@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
MyItemViewHolder itemHolder = (MyItemViewHolder) holder;

// bind your view here
itemHolder.tvItem.setText(list.get(position));
}

@Override
public RecyclerView.ViewHolder getFooterViewHolder(View view) {
return new MyFooterViewHolder(view);
}

@Override
public void onBindFooterViewHolder(RecyclerView.ViewHolder holder) {
MyFooterViewHolder footerHolder = (MyFooterViewHolder) holder;

// bind your footer view here
footerHolder.tvItem.setText(title);
}
}

然后用您的部分设置 RecyclerView:

// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();

// Create your sections with the list of data for each year
TradeSection section1 = new TradeSection(bobDataList);
TradeSection section2 = new TradeSection(jimDataList);

// Add your Sections to the adapter
sectionAdapter.addSection(section1);
sectionAdapter.addSection(section2);

// Set up your RecyclerView with the SectionedRecyclerViewAdapter
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(sectionAdapter);

关于java - 带有部分的 Recyclerview,但每个部分仅带有页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38352021/

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