通过 uri / 通过它包含的数据获取 ListView 项目位置
Posted
技术标签:
【中文标题】通过 uri / 通过它包含的数据获取 ListView 项目位置【英文标题】:Get ListView item position by uri / by the data it contains 【发布时间】:2020-03-05 04:13:05 【问题描述】:我有一个使用自定义 CursorAdapter 填充的 ListView。 现在我想手动更新 ListView 中的一个特定项目。我有该项目的内容 URI。是否可以仅使用此信息来获取列表视图中项目的位置? 如果我有这个职位,我可以做类似的事情
View v = mListView.getChildAt(itemPosition - mListView.getFirstVisiblePosition());
更新视图。但是如何获取 itemPosition?
我知道我在 onItemClickListener 中获得了位置,但我需要在不被点击的情况下更新视图。
有帮助吗?
【问题讨论】:
【参考方案1】:ListView
不支持更新单个位置。
您必须使用新数据更新适配器(即使您更改单个位置)并调用 mAdapter.notifyDataSetChanged()
如果您通过其位置(通过listView.getChildAt()
)获得View
将起作用。但是,如果您向上和向下滚动列表,该视图将再次显示旧数据,因为适配器不知道更改(并且是适配器更新了 view contect view getView()
)。
当您调用notifyDataSetChanged()
时,您告诉适配器您的数据集有新信息,ListView/Adapter
将重新绘制可见项(它不会一次重新绘制整个列表......仅可见项目)。
您将来可能要考虑更改为RecyclerView
。 RecyclerView
中使用的 BaseAdapter
支持添加/删除/更新单个位置等操作。
【讨论】:
嗯。我的View v = mListView.getChildAt(itemPosition - mListView.getFirstVisiblePosition());
版本似乎可以工作,但一旦我有了这个职位。但由于我无法以干净的方式获得itemPosition
,我可能会在某个时候采纳您的建议并迁移到 RecyclerView。谢谢!以上是关于通过 uri / 通过它包含的数据获取 ListView 项目位置的主要内容,如果未能解决你的问题,请参考以下文章
Dart Uri Api - 请求通过将 HTML 代码提供给问号来更改链接
Android 两个Activity之间怎样使用Uri传递图片,怎样获取图片的Uri,怎样通过Uri得到图片
Android获取数据库图片uri路径并用imageView显示