0

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

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

在此处输入图像描述

4

2 回答 2

0

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

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

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

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

于 2013-11-14T13:48:54.787 回答
0

我猜盒子的数量在滚动时会发生变化,但是您需要在列表项中分配动态的盒子数量吗?

解决方案:

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

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

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

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

于 2013-11-14T10:59:24.470 回答