Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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);
    }
});