问题标签 [getview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 以相同位置调用 getView()
我的自定义适配器中扩展 ArrayAdapter 的 getView() 方法被多次调用,使用相同的位置值。我尝试了自定义适配器,当我提供的 ArrayList 有 5 个项目时它可以工作,而当 ArrayList 有 3 个项目时它没有按预期工作。
这是代码
和适配器
android - BaseAdapter 的 getView() 中的问题 Viewholder 为空
convertView 不为空,但 viewholder 为空,因为我添加了一个新的数据调用 notifyDataSetChanged,接下来的操作如下:
问题是我需要动态更改 ListView 高度,如果注释它就没有问题,我在这里发现问题:
android - ArrayAdapter 的 getView() 方法重复前两项
我的列表中有两种类型的视图。
- 新闻视图
- 广告视图。
适配器的 getCount() 方法返回项目的总数。但是 getview 总是将位置返回为 0 或 1。我使用了 getViewType() 和 getViewCount() 方法。我也使用了 Holder。但是,它仍然重复这些项目。
这是我的代码:
当我使用此代码时,列表项会重复。但是当我使用时,
它工作正常。我知道这不是正确的方法。那么为什么我的代码在使用以前的方法时不起作用。任何帮助,将不胜感激。
android - 停止 Android 的 adapter.notifyDataSetChanged() 与包含 notifyDataSetChanged() 代码的函数并行运行
我为我的 Android 应用程序运行了以下单例
然后从 Home 活动中,我通过
在 Home 活动中,我设置了一个侦听器,只要在线数据存储发生变化,就会从数据存储在线服务器触发
在运行 updateList() 之前我允许一些时间,因为对数据存储的更新不是原子的,因此在线数据存储上的所有行需要大约 2 秒,暂时忽略 app.Fetch,我稍后会解释。
updateList() 清除必须填充 listAdapter 并运行 adapter.notifyDataSetChanged() 的项目的 ArrayList
在我的自定义 listAdapter 中,我将 getView 设置如下:
和 updateItem(mHolder, this.getItem(position))
基本上,当应用程序启动时,app.Fetch 设置为 true,来自 Home 的 updateList() 创建适配器并调用 adapter.notifyDataSetChanged()。
此时,listAdapter getView 会为列表中的每个项目调用,检查 id 作为 hashmap 中的键,但没有找到它,因此它从数据存储中获取数据,并将数据插入到 hashmap 和视图中。
到目前为止,一切都很好。列表视图被正确填充,当视图被滚动时,数据会从哈希图中正确检索,而不是从数据存储中一遍又一遍地获取。
然后,我从另一部手机添加了一个新的数据存储,它触发了监听器,在我的手机上它显示“RECEIVED”toast,这意味着监听器已被触发。app.Fetch 变为 true,然后调用 updateList()。
如果我在 updateList() 中的任何地方检查 app.Fetch 值,它仍然设置为 true,而如果我在 getView 代码运行时检查它,它会设置为 false,因此它会再次从 hashmap 中检索数据,而不是在线获取更新的数据数据存储。
我认为 getView 代码开始与 updateList 函数并行运行,因此它显示以下行为:
boolean true updateList() start adapter.notifyDataSetChanged() runs ListAdapter getView start updateList() ends boolean false getView 检查布尔值,因为此时它为假,它从哈希图中检索数据。
有什么办法可以让 updateList 等到 listview 中的所有项目都通过 getView 运行?
android - 如何从特定项目位置开始显示列表视图
我有 300 首 mp3 歌曲的列表视图,假设正在播放歌曲 52。所以我希望下次用户打开歌曲列表时,他前面的列表行必须从第 52 行开始(而上下仍然是行)。我尝试使用
并且
但两者都是毫无意义的方法,不要带我到第 52 行。(这些方法是我使用的,但可能不是解决方案)我也没有找到解决方案谷歌搜索它。请让我知道你们是否可以处理这个!
非常感谢您的聆听!
android - 使用 AsyncTask 从内部存储加载图像文件
我正在尝试以缩略图的形式将图片文件从我的内部存储加载到列表视图。目前,我正在使用 ViewHolder,但滚动时加载仍然不稳定,所以我将尝试使用 AsyncTask。但是,我无法理解如何构建 AsyncTask,因为我发现的大多数示例都涉及从网站下载。我什至不确定是否应该在我的 BaseAdapter 或 MainActivity 中对它进行子类化。我在下面添加了我的 baseadapter,并在底部添加了未完成的 AsyncTask。如何将其构造为:使用 AsyncTask 协助 ViewHolder,或直接将图像传递给 AsyncTask 并让它返回位图,以便 ListView 平滑滚动?
}
android - 如何保存 getView() 方法中定义的视图的实例状态
我有 MainActivity ,ViewPager
它承载三个选项卡,它们各自的类扩展Fragment
。其中一个选项卡的布局带有ListView
,listView 中每个项目的布局如下
此 ListView 具有扩展的自定义适配器类BaseAdapter
。
我想要做的是,保存 ListView 的 Checkboxes 的检查状态。在扩展 Fragment 的类中,我重写了方法onSaveInstanceState
,问题是复选框是在getview()
扩展 BaseAdapter 的类的方法中定义的!我想知道如何在“onSaveInstanceState”方法中保存复选框的检查状态?
android - 通用图像加载器 - 调用太多 getView()
我正在尝试ListView
使用通用图像加载器创建图像。目前,没有图像出现或加载。我发现getView()
fromImageAdapter
被调用了很多次。
例如,如果列表大小为 3,则getView()
应该调用 3 次,但在我的代码中,调用 24 次!!!
这是我的源代码。
ArrayList<HashMap<String, Object >>
feedList 有 3 个项目。因此,getView()
应该调用 3 次但调用 24 次。我认为日志应该是这样的,
但是,我得到这样的日志:
android - 如何将listView中的选中项添加到ArrayList?
我有一个包含 12 个项目的 ListView,每个项目包含一个 TextView 和一个复选框。我设法使 CheckBox 检查状态保持不变,这样当我上下滚动时,我不会丢失为每个 CheckBox 设置的检查状态。
我现在面临的问题是,对于 ListView 中的每个项目,如果选中其对应的 CheckBox,我想将 TextView 添加到 ArrayList,如果未选中相应的 CheckBox,我应该从 ArrayList 中删除 TextView,如果它包含在里面。
在 getView() 方法的以下代码中,行“Log.d(TAG,”chosen topic size: “+ selectedTopics.size());” 总是返回零??!!
请帮我解决这个问题。
获取视图():
将 ArrayList 的初始化移动到构造函数后出现 LogCat 错误:
com.example.mqtt_designlayout_02.listviewadapter.ListViewAdapter$1.onCheckedChanged(ListViewAdapter.java:95)
android - Android自定义适配器Listview 1选择导致多选
我有一个带有自定义适配器的列表视图,其中有一个切换按钮、一个微调器和一些其他视图。
此列表视图显示的项目超出了 1 个屏幕通常可以容纳的数量,这导致了一个我不明白的奇怪问题。
例如:当我按下列表中第一项的切换按钮时,背景会改变颜色。如果我向下滚动到“第二个屏幕”(项目 10-18),我注意到第 11 个项目也被“切换”了,因为背景也发生了变化。如果我再向下滚动甚至进一步向下滚动到第 20 项也已被选中。
我的适配器如下所示: