为了账号安全,请及时绑定邮箱和手机立即绑定

调用notifyDataSetChanged()后如何在列表视图中设置文本

调用notifyDataSetChanged()后如何在列表视图中设置文本

BIG阳 2021-05-02 08:09:42
方案:我有一个ListView,当用户单击孩子时,它通过主要活动在ListView内设置TextView的值。我有一个FloatingActionButton,它添加和减去一个对象以计算ListView中的项目数量。要增加或减少ListView显示的子项数量,我致电notifyDataSetChanged()。我正在尝试设置在调用后输入回TextView的文本notifyDataSetChanged()问题: notifyDataSetChanged()完成运行后,将TextView重置为空白。我尝试过的事情:我尝试将ListView项目中的所有值保存到单独String[] savedItems的文件中,并在TextView中设置文本。我已经在调试器中逐步运行了代码,看到代码正在保存文本并实际设置文本,但是由于某种原因,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,但是由于某种原因它没有显示。setBackDistortionsListprivate 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]);    }}
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

在这里找到了答案: 如何检查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();


查看完整回答
反对 回复 2021-05-12
  • 1 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信