【问题标题】:Android- ListView items with dynamic contentAndroid- 具有动态内容的 ListView 项目
【发布时间】:2013-11-14 10:43:21
【问题描述】:

我在使用 ListView 时遇到了一个问题。 我在每个项目中生成一个带有动态 TextViews(图像中的白框)的列表视图。 ListView 使用“模型”类的 ArrayAdapter 填充。有些项目可以有 2 个白框,有些可以有更多,这取决于“模型”的数据/计数。另外,我使用 ViewHolder 模式并且可以维护列表项的其他状态。但是这些框是在 getView() 方法中动态添加的。

所以我的问题是,当 ListView 滚动时,如何使用 ViewHolder 或任何其他方法来维护这些动态添加的 TextView 的状态。

【问题讨论】:

  • 请显示一些代码
  • 分享一些代码,以便任何人都可以帮助你..!!
  • 顺便说一句,我解决了这个问题。我的模型存储了一些关于行中框数的错误信息。我纠正了它并解决了问题

标签: android android-listview android-arrayadapter


【解决方案1】:

我猜盒子的数量会随着滚动而改变,但是你需要动态的盒子数量来分配到列表项中吗?

解决方案:

  1. 将列表项中的大小(即)框数设置为整​​数数组。 (例如:size[position] = 5)。
  2. 应在列表适配器或基本适配器加载列表项之前设置大小。
  3. 现在在基本适配器的 getView() 的末尾,正确的代码如下

    for(int i = 0; i< size[position]; i++){
    //generate textview i.e white boxes here
    
    }
    

我在动态列表中遇到了同样的问题,这解决了这个问题。

如果您仍有问题,请在此处发布您的代码。

【讨论】:

    【解决方案2】:

    您需要有一个列表或一些数据结构来存储您从 ui 中输入的数据的内容,例如 SparseArray&lt;ModelUI&gt;。您的 ModelUI 类应该有一些字符串属性来存储动态文本框中的文本。

    此外,您需要考虑到您在此处处理两个索引:SparseArray 中的一个索引/键,它是模型对象列表中的真正索引,以及您的 Listview 中可见项目的索引。

    假设您有一个包含 100 个项目的列表,在您的列表视图中您将始终显示 10 个;你总是需要从你的 listView 中引用 firstVisibleIndex。

    如果我理解正确,您想编辑一个文本框,滚动 50 个项目,滚动回编辑的项目并在文本框中看到正确的文本,对吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 2018-09-19
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多