我已经实现了自定义适配器并为图像下载做了一些异步操作。我还实现了 PullToRefresh - Nillson。
这就是我为更新所做的
int startRow = mainListView.getFirstVisiblePosition();
int endRow = mainListView.getLastVisiblePosition();
Log.e("IMAGEURL", "position: " + curPosition + " " + "startRow: " + startRow + " " + imageInfo.imageUrl);
if (curPosition >= startRow && curPosition <= endRow & imageInfo.holderPosition == curPosition) {
View rowView = mainListView.getChildAt(curPosition - startRow);
奇怪的是,rowView 返回的是 PullToRefresh 顶部相对布局,而不是列表的行视图。这是调试信息,因为我的视图中没有 ant 进度条,它与 PullToRefresh 顶部布局完全匹配。
[0] ProgressBar (id=830008126840)
[1] ImageView (id=830008129008)
[2] TextView (id=830008130288)
[3] TextView (id=830008131616)
只有当我的 listVew 中没有滚动时才会发生这种情况(所有行都可见,没有隐藏行)。如果我将行数增加到可见数字之外,我会在 mainListView.getChildAt(curPosition - startRow) 上得到我的 rowView,但不是正确的,因为在位置 0 mainListView.getFirstVisiblePosition() 给了我 1,实际上应该为零。
更多细节:
PullToRefresh 库在用户的 listView 行的顶部添加一个额外的行,它发生在索引 0 处。
它还更改 getCount() 并给出(原始行 + 1 额外)
编辑:
我已经删除了 PullToRefresh 一切正常,getFirstVisiblePosition() 给出了正确的位置。图像映射到正确的行。
但我需要拉来刷新。仍在寻找答案。