gpt4 book ai didi

java - RecyclerView更新项目的文本和图标OnClick

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

我实现了一个 RecyclerView,它正在填充一些记录它正在填充约会以及已批准和未批准状态的约会。

我实现了一个批准按钮,以便单击该约会的批准状态会在数据库上更新,并且该特定显示记录的图标和文本也会更改。

但由于某种原因,当我更新文本和图标时,onclick 中的它不会动态更改,但对数据库的请求正在工作,因为我可以看到数据库中的更改,并且当我重新加载整个数据集时,它会显示适当改变。

这是代码

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

final AppointmentObject appointment = appointmentList.get(position);

//binding the data with the viewholder views
holder.patient_name.setText(appointment.patient_name);
holder.app_date.setText(appointment.appointment_date);

if (appointment.descr.length() > 30){
holder.app_descr.setText(String.valueOf(appointment.descr.substring(0,30)));
}else {

holder.app_descr.setText(String.valueOf(appointment.descr));
}

if (appointment.approved_status.equals("0")){
holder.approved_status.setTextColor(Color.RED);
holder.approved_status.setText("Not Approved");
holder.app_pa_approve.setImageResource(R.mipmap.approveicon);
}else {
holder.app_pa_approve.setImageResource(R.mipmap.approvedicon);
holder.approved_status.setTextColor(Color.GREEN);
holder.approved_status.setText("Approved");
}


holder.app_pa_relative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnClickListenr.clicked_On_appointment(appointment);
}
});

holder.app_pa_approve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.approved_status.setTextColor(Color.GREEN);
holder.approved_status.setText("Approved");
holder.app_pa_approve.setImageResource(R.mipmap.approvedicon);
notifyDataSetChanged();
mOnClickListenr.aprove_appointment(appointment, position);
}
});


}

这是 onBindViewHolder,我试图在其中动态更改 onclick 数据。

mOnclickListiner.aprove.appointment 只是我在 Activity 中实现的一个监听器,用于将数据传递给 Activity

public interface OnClickListener{
public void clicked_On_appointment(AppointmentObject appointment);
public void aprove_appointment(AppointmentObject appointment, int position);

}

OnClcick 内的 mOnClickListenr.aprove_appointment(appointment,position); 正在执行,因此我知道 setText 和 setImageResource 也在执行,但由于某种原因,更改未显示在 View 中。

如您所见,我正在正确使用notifyDataSetChanged();。造成这种行为的原因是什么?

Image

正如你所看到的,即使我点击 imageButton 也没有动态变化

只有当我重新加载数组列表时,它才会显示更改,这意味着数据库中正在发生更改并且 onclick 正在执行

Image2

最佳答案

您必须在约会上设置已批准当您调用notifiyDataSetChanged时,它会重新绑定(bind)所有 View ,并且约会仍标记为未批准

    holder.app_pa_approve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

appointment.setApprovedStatus(1);

holder.approved_status.setTextColor(Color.GREEN);
holder.approved_status.setText("Approved");
holder.app_pa_approve.setImageResource(R.mipmap.approvedicon);
notifyDataSetChanged();
mOnClickListenr.aprove_appointment(appointment, position);
}
});

关于java - RecyclerView更新项目的文本和图标OnClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55068130/

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