java - 调用 notifyDataSetChanged() 后如何在列表视图中设置文本
问题描述
场景:我有一个ListView,当用户点击一个孩子时,它通过主活动设置ListView内的TextView的值。
我有一个FloatingActionButton,它添加和减去一个对象来计算ListView中的项目数量。
要添加或减去ListView显示的子项数量,我调用notifyDataSetChanged()
.
我正在尝试在调用后将输入的文本设置回TextViewnotifyDataSetChanged()
问题: notifyDataSetChanged()
在完成运行后将 TextView 重置回空白。
我试过的:我试过将ListView项目中的所有值保存到一个单独的文件中,并在TextViewString[] savedItems
中设置文本。我已经在调试器中逐步运行代码,看到代码正在保存文本并实际设置文本,但由于某种原因,尚未完成其工作。notifyDataSetChanged()
完成后如何设置文本notifyDataSetChanged()
?
有问题的代码:
public void addNewThought(int numberOfThoughts) {
String[] savedDistortionsList = saveDistortions(); // This saves each childs text
selectedItems[numberOfThoughts] = new ArrayList<String>();
IntegerNumberOfThoughts.add(Integer.toString((numberOfThoughts++)) ); // Just the variable that counts the number of children needed in ListView
distortionsAdapter.notifyDataSetChanged(); // Refresh ListView
setBackDistortionsList(savedDistortionsList); // Put back text into ListView
}
saveDistortions()
有效,所以我认为没有必要显示,但这是setBackDistortionsList()
我测试过的代码,它实际上是在 ListView 中设置 TextView,但由于某种原因它没有显示。
setBackDistortionsList
private void setBackDistortionsList(String[] savedDistortionsList) {
View tempView;
TextView tempTextView;
for (int i = 0; i < savedDistortionsList.length; i++) {
tempView = LDistortions.getChildAt(i);
tempTextView = (TextView) tempView.findViewById(R.id.textEntry);
tempTextView.setText(savedDistortionsList[i]);
}
}
解决方案
答案在这里找到: 如何检查我的 ListView 何时完成重绘?
从用户@Petro 复制和粘贴
希望这可以帮助:
- 在列表视图上设置 addOnLayoutChangeListener
- 调用 .notifyDataSetChanged();
- 一旦完成,这将触发 OnLayoutChangeListener
- 移除监听器
在更新时执行代码 (
getLastVisiblePosition()
)mListView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { mListView.removeOnLayoutChangeListener(this); Log.e(TAG, "updated"); } }); mAdapter.notifyDataSetChanged();
推荐阅读
- java - RxJava中值发射代码和值接收代码的线程执行
- docker - 带有猫鼬的 GitLab CI Job NestJS 服务
- mongodb - mongoDB最优模式设计
- python - 没有帖子与 django 错误中的给定查询匹配
- c# - 添加非方向的相对力
- java - 运行示例项目时无法识别的 VM 选项“UseConcMarkSweepGC”
- pandas - 为什么我不能调用 sum() 两次?
- angular - Angular:如何检查另一个组件中是否存在行
- rust - Unable to create default trait implementation
- r - 带有 data.table 的矢量化函数