【发布时间】:2015-08-21 00:49:54
【问题描述】:
我有一个自定义的ArrayAdapter,即使我的getCount 方法被调用,(并且我正在返回我的数组的计数,在示例情况下,该计数是181)我的getView 没有被调用。这从今天开始,似乎是随机发生的。有时,它只是被调用并完美显示。有时,加载数据后,它只是保持空白。这里有几点:
- 我在
getCount中设置了一个断点,它返回一个正数。 - 我已将列表的背景颜色设置为某种颜色,它可以完美显示,用它的背景颜色填充屏幕。所以没有布局问题。
- 我在
setAdapter方法中设置了一个断点,它在UI 线程上被正常调用。 (如果不调用,getCount也不会被调用)
有趣的是,这并不总是发生。几分钟前我重新启动了我的设备(Galaxy S3,如果有帮助),问题就消失了,但现在,当我写这个问题时,它又回来了。我检查了我的网络连接,没有问题(无论如何我都成功地获得了一系列项目)。我见过很多关于这个特定问题的问题,但没有一个能解决我的问题。如果有帮助,我会使用 ICS。
这是我的构造函数:
protected List<Map<String, Object>> objects;
protected Map<String, Object> user;
public FeedAdapter(Context context, List<Map<String, Object>> objects, Map<String, Object> attachedUser) {
super(context, 0, objects);
this.objects = objects;
this.user = attachedUser;
}
我在数据加载处理程序的 UI 线程上显式调用它(dataSource 对许多项目有效):
dataSource = (ArrayList<Map<String, Object>>) task.getResult();
FeedAdapter adapter = new FeedAdapter(getActivity(), dataSource, getUser());
ListView list = (ListView) rootView.findViewById(R.id.listView);
list.setOnItemClickListener(self);
list.setAdapter(adapter);
什么可能导致问题?
【问题讨论】:
-
您是否通过调用 super() 在构造函数中正确地将数据传递给超类?如果您使用
ArrayAdapter,则无需覆盖getCount。您也可以尝试扩展BaseAdapter而不是ArrayAdaper -
@AbhishekV 我已经添加了我的构造函数代码。我认为它是正确的,但看看。
-
刚刚检查,从网络加载数据后,您是否调用 notifydatasetchanged?
-
@CanPoyrazoğlu 构造函数似乎是正确的。
-
@prashant 我已经在加载数据后创建了带有加载数据的适配器。 (是的,我知道,也许不是最好的模式,但无论如何)
标签: android android-listview android-arrayadapter android-4.0-ice-cream-sandwich