我有一个片段,其中有recyclerview,并为其设置了适配器。如果我点击第一个添加到购物车,然后点击第二个。之后,当片段重新启动时,只有“第一次添加到购物车”的状态才会更改。同样地,如果我在重启后单击recyclerview中的第一个添加到购物车元素,则只有第二个添加到购物车的状态被更改。我想调用从0到适配器中最后一个元素的onBindViewHolder位置。在ViewHolder类中,有一个Add_to_cart change监听器。
public void onBindViewHolder(@NonNull final MilkAdapter1.ViewHolder holder, int position) {
// I need to call this method for all elements in recyclerview whenever restarted
if (c != null && c.moveToFirst()) {
do {
for (int i = 0; i < list.size(); i++) {
if (name.equals(holder.product_name.getText().toString())) { // if present just update the AddToCart status
// if add_to_cart element is present in sqlite Database, just update its status
holder.textView.setVisibility(View.GONE); // this will change the Add to Cart status
holder.linearLayout.setVisibility(View.VISIBLE);
holder.digit.setText(quantit + "");
}
}
} while (c.moveToNext());
c.close();
}
}
抱歉,我不能上传图片到我的应用程序,因为较少的声誉。
假设您正在将所选项目存储在ArrayList中(如果您不这样做,我建议您这样做),解决方案是:
public void onBindViewHolder(@NonNull final MilkAdapter1.ViewHolder holder, int position) {
// I need to call this method for all elements in recyclerview whenever restarted
if (c != null && c.moveToFirst()) {
do {
if (nameArrayList.contains(holder.product_name.getText().toString())) { // if present just update the AddToCart status
// if add_to_cart element is present in sqlite Database just update its status
holder.textView.setVisibility(View.GONE); // this will change the Add to Cart status
holder.linearLayout.setVisibility(View.VISIBLE);
holder.digit.setText(quantit + "");
}
} while (c.moveToNext());
c.close();
}
}
正如Sachin Soma所指出的,您不需要为循环调用,因为列表中的每个项目都会调用一次
onBindViewHolder
。
你可以实现这个使用位置不要使用for循环...
@Override
public int getItemCount() {
return list.size();
}
public void onBindViewHolder(@NonNull final MilkAdapter1.ViewHolder holder, int position) {
// I need to call this method for all elements in recyclerview whenever restarted
if (c != null && c.moveToFirst()) {
do {
if (name.equals(holder.product_name.getText().toString())) { // if present just update the AddToCart status
// if add_to_cart element is present in sqlite Database just update its status
holder.textView.setVisibility(View.GONE); // this will change the Add to Cart status
holder.linearLayout.setVisibility(View.VISIBLE);
holder.digit.setText(quantit + "");
}
} while (c.moveToNext());
c.close();
}
}
如何使用XPath点击下面的“确定”按钮: 截图:
我是java函数编程的新手,不知道如何编写代码来避免(例如)此操作中的NPE: 我在这里的目的是在列表中查找最新对象的时间戳。关于如何更好地收集最后一个元素的建议非常受欢迎,但我在这里的主要问题实际上是为什么这有效。 文档显示,如果归约的结果为空,该函数将抛出< code > NullPointerException : http://docs . Oracle . com/javase/8/do
我有一个具有多个视图类型的viewholder。 滚动时,只有当更改值时,才会调用onBindViewHolder。这会导致我的列表项无法正确更新。 这是虫子吗?或者我做错了什么。从新的类来看,这似乎是非常奇怪的行为。 这是我的适配器: 我还提取了如下内容: 对于部分 它对第一个可见行运行良好,但随后失败。
输出8 好吧,我给出了 neg=-1,low=0、b=10、键盘=2、驱动器=3 的值,我的数组是 [3 1] [5 2 8] 我已经添加了键盘和驱动器值,将其存储在max数组中。当我将这些最大数组值与b if(max[i]进行比较时
问题内容: 我正在使用“替换”功能删除div中的所有非数字值。 看来Jquery replace只影响第一个元素。 这是我的Jquery: HTML代码: 结果: 2011 c20ff113。c201gf76341。 我想要的结果是: 2011 20113 20176341 问题答案: 您有重复的ID,这是无效的,并且还有jQueryID选择器(或jQuery内部使用的任何其他ID选择器,例如do
问题内容: 现在,我有一个div,它基本上是一个巨大的正方形,在div内,我还有另一个div,它是简单的文本,上面写着“ Upload File”,同时还有一个隐藏的input type = file元素。当用户按下div时,我要触发文件上传元素。到目前为止,我想出的代码是: 因此,我在CSS中将文件输入元素设置为。一旦他们在div id =“ test”中的任意位置单击,我想触发对文件上传元素的