首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代循环视图适配器中的所有viewholders?

如何迭代循环视图适配器中的所有viewholders?
EN

Stack Overflow用户
提问于 2017-04-09 08:26:00
回答 2查看 2.6K关注 0票数 0

我有一个带有RecyclerView的片段,其中包含一些绑定到它的记录。每一张唱片都是一种产品,是“组合”的一部分(百威淡酒、米勒淡酒、金枪鱼三明治等)。基本上,客户正在为组合选择产品(6个国产啤酒,2个三明治和1个饮料,等等)每种产品都有一组“产品分组”(国产啤酒、啤酒、三明治、午餐等)。在每个项目旁边,我有一个加号和减号按钮,用于在购物车中添加/减去项目。在我的适配器中,我需要检查客户是否已经选择了他的所有“国产啤酒”或两个“三明治”。如果某些组数量合计值超过组合框中允许的组总数,我需要禁用这些项目的添加按钮。

ComboItemsAdapter.java

代码语言:javascript
复制
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
...
itemHolder.tvQuantity.setText("0");
...
itemHolder.buy_subtract_button.setOnClickListener(new View.OnClickListener() 
{
     @Override
     public void onClick(View v) {
        ...
        checkTotals(); 
     }
}
itemHolder.buy_add_button.setOnClickListener(new View.OnClickListener() 
{
     @Override
     public void onClick(View v) {
        ...
        checkTotals(); 
     }
}

}

private void checkTotals(){
//here I want to check some stuff, and if that stuff is true I want to disable all the buttons in that viewholder, some buttons will be disabled, some won't
}

所以我的问题是,在checkTotals()函数中迭代循环视图/适配器中的每一行并禁用相应按钮的最佳方式是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-04-09 09:40:40

将itemHolder传递给checkTotal()函数,并在该函数下执行条件语句以启用或禁用单击。

票数 0
EN

Stack Overflow用户

发布于 2017-04-09 14:11:41

实际上,检查条件的最佳位置是在onBindViewHolder内部!由于您将根据某些条件调整每个rowUI,因此必须在onBindViewHolder中执行此操作;因为它是在回收一行并将分配新数据时调用的方法。

附注:但是请注意,不建议在onBindViewHolder中进行复杂的计算,因为此方法必须尽快执行。如果您的条件很复杂,请在适配器构造函数中执行,并缓存每一行的结果。稍后只需根据结果在onBindViewHolder中调整视图即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43301771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档