我写了一个扩展import x from 'xpath'
的类。单击一个组时,我希望它展开,然后我在视图中的自定义指示器将动画180度旋转。它有效。
我的问题是在同一个BaseExpandableListAdapter
上我想使用clicklistener
方法更新TextView
,但是当我运行它时,它不会更新视图。
我测试了问题是否在setText()
的引用中:更改可见性,旋转它,设置动画,它们都可以工作。它只是TextView
不起作用。
以下是适配器类中的相关代码:(实际上有两个setText()
我想更新)
TextViews
我也尝试将此代码放在getGroupView()中(将OnClickListener分配给视图),但我得到了相同的结果。
其他一些相关方法:
@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;
}
没有更新其文字的任何想法?
答案 0 :(得分:0)
根据@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());
}
});
}