0

BaseExpandableListAdapterを拡張するクラスを作成しました。グループをクリックすると、そのグループが展開され、ビューのカスタムインジケータが180回転してアニメートされます。そして、それは動作します。TextView.setText()はExpandableListViewアダプタのテキストを更新しません

私の問題は同じですclicklistenersetText()メソッドを使用してTextViewを更新しますが、実行するとビューが更新されません。
問題がTextViewへの参照であるかどうかをテストしました。可視性を変更し、回転させ、アニメーション化し、すべて機能させました。そのsetText()は動作しません。 (にOnClickListenerを割り当てる)私もgetGroupView(このコードを入れて試してみました(2 TextViewsは私が更新したいと思い、実際にあります)

@Override 
public void onGroupExpand(int groupPosition) { 
    GroupViewHolder holder = mViewHolderSparseArray.get(groupPosition); 
    Lesson lesson = (Lesson) getChild(groupPosition, 0); 
    holder.indicatorView.animate().rotation(180); 
    holder.teacherView.setText(lesson.getTeacher()); 
    holder.classroomView.setText(lesson.getClassroom()); 
} 

@Override 
public void onGroupCollapse(int groupPosition) { 
    GroupViewHolder holder = mViewHolderSparseArray.get(groupPosition); 
    holder.indicatorView.animate().rotation(0); 
    holder.teacherView.setText("..."); 
    holder.classroomView.setText(""); 
} 

:ここ
は、アダプタクラス内の関連するコードです。私は同じ結果を得る。

いくつかの他の関連するメソッド:

@Override 
public long getGroupId(int groupPosition) { 
    return groupPosition; 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) { 
    return childPosition; 
} 

@Override 
public boolean hasStableIds() { 
    return true; 
} 

@Override 
public boolean isChildSelectable(int groupPosition, int childPosition) { 
    return true; 
} 

TextViewは、そのテキストを更新しない理由を任意のアイデア?

+1

コール 'notifyDataSetChanged();'とhttps://stackoverflow.com/a/23281494/3395198 –

+0

@IntelliJAmiya私はどのように表示されませんnotifyDataSetChanged()は役に立ちました(試してもうまくいかなかった)が、あなたがリンクした答えが助けになりました。私は答えを投稿します。 –

答えて

0

@IntelliJAmiyaによってリンクされた回答によると、おそらくUIスレッドで実行されなかったため、setText()は更新されません。ここで

は、私はこの問題を修正するために何をしたかです:

@Override 
public void onGroupExpand(int groupPosition) { 
    final GroupViewHolder holder = mViewHolderSparseArray.get(groupPosition); 
    final Lesson lesson = (Lesson) getChild(groupPosition, 0); 
    holder.indicatorView.animate().rotation(180); 
    holder.teacherView.post(new Runnable() { 
     @Override 
     public void run() { 
      holder.teacherView.setText(lesson.getTeacher()); 
      holder.classroomView.setText(lesson.getClassroom()); 
     } 
    }); 
} 
関連する問題