TextView.setText() 不更新 ExpandableListView 适配器中的文本

TextView.setText() doesn't update text in ExpandableListView adapter

我写了一个扩展 BaseExpandableListAdapter 的 class。单击一个组时,我希望它展开,然后我在视图中的自定义指示器将以动画方式旋转 180。它有效。

我的问题是,在同一个 clicklistener 上,我想使用 setText() 方法更新 TextView,但是当我 运行 它时,它不会更新视图。
我测试了问题是否出在对 TextView 的引用中:更改可见性、旋转它、为其设置动画,它们都有效。只是 setText() 不起作用。
下面是适配器class中的相关代码:(其实有两个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("");
}

我也曾尝试将这段代码放在 getGroupView() 中(为视图分配一个 OnClickListener),但我得到了相同的结果。

其他一些相关方法:

@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 不更新文本吗?

根据@IntelliJAmiya 链接的答案,setText() 没有更新,因为它可能没有在 UI 线程上 运行。

以下是我为解决此问题所做的工作:

@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());
        }
    });
}