【发布时间】:2014-09-12 10:35:01
【问题描述】:
我一直在尝试实现两个 ListView 之间的同步,但我似乎无法使其顺利工作。
这个想法是列表视图在 LinearLayout 中彼此相邻对齐。每个列表视图的行可能非常复杂(即它们可能包含多个 TextView, 复选框、微调器或按钮)。每个 ListView 使用的数据集明显不同,因此左侧列表视图中的行与行相比可以具有不同的高度 在正确的列表视图中。我想要做的是让它们在同一位置具有相同的行高。
我设法对两个列表使用相同的适配器并引入了中介模式。它现在所做的是在 getView 返回视图之前我在我的调解器中调用一个方法 几乎做了以下事情:
需要绘制 LV1 中的第 3 行。 android 绘制它并确定它需要 40 像素高。 就在它返回之前,我调用了我的中介,它检查第二个列表视图中同一行的高度(我在中介中保留了两个适配器实例的引用)位置,并返回它是 70 像素。 我将LV1中第3行的高度设置为70并重新绘制。
问题在于,每当它需要绘制一个新行时,它都会做大量工作,并且对 getView(); 的调用数量非常多。 此外,当我在其中一个列表视图中更改行的高度以使其与另一个匹配时,我会强制重新绘制该列表视图中的所有可见子项,这会增加更多延迟。
我的问题是 - 我的概念完全错误吗?我在这里错过了什么吗?有没有更简单的方法来做我想做的事?
| LV 1 | | LV 2 |
| 1 | | 1 |
| 2 | | 2 |
| 3 | | 3 |
| 4 | | 4 |
| 5 | | 5 |
【问题讨论】:
标签: android android-layout listview android-view