2017-07-24 1 views
-1

Das ist, was ich will nach Bild enter image description hereWie kann der Text einer Schaltfläche in der Recycleransicht geändert werden, wenn die Adapterklasse zum zweiten Mal geladen wird?

ich meinen Code

Model-Klasse

class Msg{ 
private Boolean BtnName; 

public Boolean getBtnName() { 
    return BtnName; 
} 

public void setBtnName(Boolean btnName) { 
    BtnName = btnName; 
} 
} 

AdapterClass bin teilen

@Override 
    public void onBindViewHolder(final TeachersTodayScheduleViewHolder holder, final int position) { 
    mTeacherScheduleArrayList.get(position).setBtnName(false); 
    holder.btn_checkin.setTag(position); 
    holder.btn_checkin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Object data = v.getTag(); 
      if (data != null) { 
       // I have set the Boolean value to true after clicking this particular button, but whn the arraylist again loading, the boolean value disaapear 
       mTeacherScheduleArrayList.get(position).setBtnName(true); 

      if(mFlagtrue!=null && mFlagtrue.contentEquals("flag_true")) 
    { 
     if(mTeacherScheduleArrayList.get(position).getBtnName().equals(true))// when it return true, then below colde work, this is not happening 
     { 
      holder.btn_checkin.setText("Attended"); 
      holder.btn_checkin.setBackgroundResource(R.color.green_btn); 
      holder.btn_checkin.setEnabled(false); 
     } 
    } 
    } 

Was mache ich falsch, bitte Hilfe, Vielen Dank im Voraus

Antwort

0
public void onBindViewHolder(final TeachersTodayScheduleViewHolder holder, final int position) { 
    mTeacherScheduleArrayList.get(position).setBtnName(false); // <<<<<< 
    ....... 

Sie setzen den Wert jedes Mal auf false, wenn die Ansicht gebunden ist. Entferne diese Zeile.

+0

TeacherScheduleArrayList.get (Position) .setBtnName (false); -> Dadurch wird der boolesche Wert beim ersten Laden auf false gesetzt, und wenn auf die Schaltfläche geklickt wird, wird diese Position wahr, Wenn die Adapterklasse das zweite Mal lädt, werden alle vorherigen Werte gelöscht und neue Werte zugewiesen, –

+0

Nein, es wird auf gesetzt false * jedes Mal, wenn die Ansicht erstellt wird, auch nachdem Sie auf die Schaltfläche geklickt haben. Wenn Sie die Ansicht außerhalb des Bildschirms scrollen und dann zurück zu ihr scrollen, wird diese Zeile auf 'false' zurückgesetzt. –

Verwandte Themen