Android //计算使用点 int currentUsage=current.getNumUsage(); int newUsage=currentUsage+1; 当前设置(新用法); 更新使用情况(当前); //更改图标,以便用户知道它已被单击(今天) holder.plus_usage.setImageResource(R.drawable.ic_usage_point_给定); //让它一天只能点击一次 } }); } 否则{ holder.subUsage\u name\u cv\u dummy.setText(“创建一个新Sub!”); 持有人.子用途(时间)cv(虚拟)setText(00);; } } //更新使用次数 专用void updateEnumUsage(最终子项){ 新线程(newrunnable()){ @凌驾 公开募捐{ Looper.prepare(); SubDatabase.getInstance(上下文) .getsubDAO() .updateSub(sub); } }).start(); } 公共无效集合子集合(列表子集合){ this.subList=subs; notifyDataSetChanged(); } @凌驾 public int getItemCount(){ 如果(子列表!=null){ 返回subList.size(); }否则 { 返回0; } }
}问题是您当前没有存储心脏图标的值。如果没有这些信息,您无法告诉Android //计算使用点 int currentUsage=current.getNumUsage(); int newUsage=currentUsage+1; 当前设置(新用法); 更新使用情况(当前); //更改图标,以便用户知道它已被单击(今天) holder.plus_usage.setImageResource(R.drawable.ic_usage_point_给定); //让它一天只能点击一次 } }); } 否则{ holder.subUsage\u name\u cv\u dummy.setText(“创建一个新Sub!”); 持有人.子用途(时间)cv(虚拟)setText(00);; } } //更新使用次数 专用void updateEnumUsage(最终子项){ 新线程(newrunnable()){ @凌驾 公开募捐{ Looper.prepare(); SubDatabase.getInstance(上下文) .getsubDAO() .updateSub(sub); } }).start(); } 公共无效集合子集合(列表子集合){ this.subList=subs; notifyDataSetChanged(); } @凌驾 public int getItemCount(){ 如果(子列表!=null){ 返回subList.size(); }否则 { 返回0; } },android,sorting,android-recyclerview,android-room,cardview,Android,Sorting,Android Recyclerview,Android Room,Cardview,}问题是您当前没有存储心脏图标的值。如果没有这些信息,您无法告诉RecyclerView如何渲染它 查看您的onBindViewHolder,您正在更新名称和计数的值,但不是心脏。只有在单击心脏时,才将其设置为“活动” final Sub current = subList.get(position); holder.subUsage_name_cv_dummy.setText(current.getSubName()); holder.subUsage_times_cv_dummy.setT
RecyclerView
如何渲染它
查看您的onBindViewHolder
,您正在更新名称和计数的值,但不是心脏。只有在单击心脏时,才将其设置为“活动”
final Sub current = subList.get(position);
holder.subUsage_name_cv_dummy.setText(current.getSubName());
holder.subUsage_times_cv_dummy.setText(Integer.toString(current.getNumUsage()));
// TODO - Set the current state of the heart icon.
holder.clickable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...
}
});
holder.plus_usage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.plus_usage.setImageResource(R.drawable.ic_usage_point_given);
}
});
您需要做的是保存一个值,并在渲染时使用该值。对于本例,假设您添加了boolean isActive=false代码>到您的子类
首先,由于我们需要在两个位置(渲染和onClick)更新图标,我将创建一个类似这样的小函数
void updateUsageIcon(UsageSubAdapter.ViewHolder holder, Sub sub) {
if( sub.isActive ) {
holder.plus_usage.setImageResource(R.drawable.ic_usage_point_given);
} else {
// TODO show inactive state
}
}
final Sub current = subList.get(position);
holder.subUsage_name_cv_dummy.setText(current.getSubName());
holder.subUsage_times_cv_dummy.setText(Integer.toString(current.getNumUsage()));
// Set the current value.
updateUsageIcon(holder, sub);
holder.plus_usage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Add logic to check if the user is allowed to set this to true today.
sub.isActive = true;
// Update the current value.
updateUsageIcon(holder, sub);
}
});
然后,在您的视图持有者中,您可以执行类似的操作
void updateUsageIcon(UsageSubAdapter.ViewHolder holder, Sub sub) {
if( sub.isActive ) {
holder.plus_usage.setImageResource(R.drawable.ic_usage_point_given);
} else {
// TODO show inactive state
}
}
final Sub current = subList.get(position);
holder.subUsage_name_cv_dummy.setText(current.getSubName());
holder.subUsage_times_cv_dummy.setText(Integer.toString(current.getNumUsage()));
// Set the current value.
updateUsageIcon(holder, sub);
holder.plus_usage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Add logic to check if the user is allowed to set this to true today.
sub.isActive = true;
// Update the current value.
updateUsageIcon(holder, sub);
}
});
作品很漂亮,非常感谢!心现在和卡片一起分类!
final Sub current = subList.get(position);
holder.subUsage_name_cv_dummy.setText(current.getSubName());
holder.subUsage_times_cv_dummy.setText(Integer.toString(current.getNumUsage()));
// Set the current value.
updateUsageIcon(holder, sub);
holder.plus_usage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Add logic to check if the user is allowed to set this to true today.
sub.isActive = true;
// Update the current value.
updateUsageIcon(holder, sub);
}
});