具有动态内容的Android-ListView项目

时间:2013-11-14 10:43:22

标签: android android-listview android-arrayadapter

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

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

enter image description here

2 个答案:

答案 0 :(得分:0)

我想滚动时no.of框会改变,但你需要在列表项中分配动态no.of框吗?

解决方案:

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

    for(int i = 0; i< size[position]; i++){
    //generate textview i.e white boxes here
    
    }
    
  4. 我在动态列表中遇到了同样的问题,这解决了这个问题。

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

答案 1 :(得分:0)

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

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

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

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