[英]RecyclerView update item's text and icon OnClick
我實現了一個RecyclerView,它正在填充一些記錄。它正在填充約會以及約會已批准和未批准狀態。
我實現了一個批准的按鈕,以便onclick在數據庫上更新該約會的批准狀態,並且還更改了該特定顯示記錄的圖標和文本。
但是由於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只是我在活動中實現的將數據傳遞到活動的偵聽器
public interface OnClickListener{
public void clicked_On_appointment(AppointmentObject appointment);
public void aprove_appointment(AppointmentObject appointment, int position);
}
mOnClickListenr.aprove_appointment(appointment, position);
OnClcick內部正在執行,所以我知道setText和setImageResource也正在執行,但是由於某種原因未在視圖中顯示。
如您所見,我正在使用notifyDataSetChanged();
正常。 此行為可能是什么原因?
如您所見,即使當我單擊imageButton時也沒有動態變化
僅當我重新加載arraylist時,它顯示更改,這意味着更改正在數據庫中並且onclick正在執行
您必須在appointment
上設置批准,當您調用notifiyDataSetChanged
它將重新綁定所有視圖,並且約會仍被標記為未批准
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);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.