【发布时间】:2017-10-05 07:52:10
【问题描述】:
我有一个物品清单。我有一个按钮,可以将您发送到另一个活动以创建新项目。保存新项目后,意图将您发送回活动,其中包含应添加新项目的列表。适配器从 BaseAdapter 扩展而来,没有过滤,它只是将数据设置到视图。
我的代码是这样的:
onCreate(){
ListView listView = findItemById......
listView.setListeners.......
}
onResume(){
data = getData();
adapter = new ListAdapter(context,data);
listView.setAdapter(adapter);
}
它有效,但这是正确的吗?
我可以在 onCreate 中使用创建适配器和 setAdapter 并仅在 onResume 中使用 notifyDataSetChanged() 吗?
【问题讨论】:
-
当然,您可以在
onCreate中创建适配器,在那里调用setAdapter并在onResume中调用notifyDataSetChanged -
这取决于
ListAdapter是如何实现的...... fx:如果它扩展了 ArrayAdapter 并且它正在使用过滤(从 ArrayAdapter 扩展而不是从 BaseAdapter 扩展的唯一原因)那么它可能不起作用,但如果您正在扩展 BaseAdapter 并直接使用传递的data引用然后是的......请记住,如果您这样做data = getData();它将不起作用,因为在此之后data将是一个不同的引用,然后之前传递给适配器 -
您可能会发现这很有帮助:- stackoverflow.com/questions/14503006/…
-
以上是不好的做法吗?
-
有点像
a bad practice,但如果它有效,那么别担心......
标签: android listview android-adapter baseadapter