2017-07-26 1 views
1

In meiner Anwendung, ich will erweitern und ZusammenbruchrecyclerView!
Ich kann recyclerView erweitern oder reduzieren und dafür Ich benutze diese Bibliothek: https://github.com/thoughtbot/expandable-recycler-view
Wie Bild drehen, wenn erweitern recyclerView in Android

ich will, wenn klicken Sie auf recyclerView Pfeil Bild drehen ( oder Zusammenbruch erweitern)!
Ich schreibe unten Code in viewHolder Klasse, aber nicht arbeiten und nicht Pfeilbild drehen!
ParentViewHolder Codes:

public class seasonParentViewHolder extends GroupViewHolder { 

    private TextView row_epGuideParent_Title, row_epGuideParent_Count, row_epGuideParent_Date; 
    private ImageView row_epGuideParent_arrowImg; 

    public seasonParentViewHolder(View itemView) { 
     super(itemView); 
     row_epGuideParent_Title = (TextView) itemView.findViewById(R.id.row_epGuideParent_Title); 
     row_epGuideParent_Count = (TextView) itemView.findViewById(R.id.row_epGuideParent_Count); 
     row_epGuideParent_Date = (TextView) itemView.findViewById(R.id.row_epGuideParent_Date); 
     row_epGuideParent_arrowImg = (ImageView) itemView.findViewById(R.id.row_epGuideParent_arrowImg); 
    } 

    public void setGenreTitle(ExpandableGroup title) { 
     if (title instanceof ExpandableModel) { 
      row_epGuideParent_Title.setText(title.getTitle()); 
      row_epGuideParent_Count.setText(((ExpandableModel) title).getCount()); 
      row_epGuideParent_Date.setText(((ExpandableModel) title).getDate()); 
     } 
    } 

    @Override 
    public void expand() { 
     animateExpand(); 
    } 

    @Override 
    public void collapse() { 
     animateCollapse(); 
    } 

    private void animateExpand() { 
     RotateAnimation rotate = 
       new RotateAnimation(360, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
     rotate.setDuration(300); 
     rotate.setFillAfter(true); 
     row_epGuideParent_arrowImg.setAnimation(rotate); 
    } 

    private void animateCollapse() { 
     RotateAnimation rotate = 
       new RotateAnimation(180, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
     rotate.setDuration(300); 
     rotate.setFillAfter(true); 
     row_epGuideParent_arrowImg.setAnimation(rotate); 
    } 
} 

erweitern und Zusammenbruch in der Bibliothek aufgerufen:

public abstract class GroupViewHolder extends RecyclerView.ViewHolder implements OnClickListener { 

    private OnGroupClickListener listener; 

    public GroupViewHolder(View itemView) { 
    super(itemView); 
    itemView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
    if (listener != null) { 
     if (listener.onGroupClick(getAdapterPosition())) { 
     collapse(); 
     } else { 
     expand(); 
     } 
    } 
    } 

    public void setOnGroupClickListener(OnGroupClickListener listener) { 
    this.listener = listener; 
    } 

    public void expand() {} 

    public void collapse() {} 

} 

Wie ich dieses Problem beheben kann und Pfeil Bild drehen, wenn Klick auf recyclerView (erweitern oder einklappen) ???

+0

Wo nennt man 'expand() '? Bitte teilen Sie mehr Code! – 0X0nosugar

+0

Tut mir leid, ich habe den Code auf Github für die letzten Minuten durchsucht, und ich habe nicht gefunden, wo 'expand()' aufgerufen wird. Also ich denke, ich kann dir nicht helfen. – 0X0nosugar

+0

In Ordnung, das ist eine große Hilfe. Ich bin wieder da :) – 0X0nosugar

Antwort

0

TL; DR Sie haben startAnimation() für Ihre ImageView statt setAnimation() zu verwenden.

void setAnimation (Animation animation)

Legt die nächste Animation für diese Ansicht zu spielen. Wenn Sie die Animation wollen sofort spielen, verwenden startAnimation (android.view.animation.Animation) statt [...]

(zitiert aus developer.android.com/reference/android/view/View.html)

+0

@Kir - einfach 'setAnimation()' ersetzen für 'startAnimation()' in Ihren beiden Methoden 'expand()' und 'collapse()' – 0X0nosugar