Android 多久打一次电话;notifyDataSetChanged();更改阵列适配器时

Android 多久打一次电话;notifyDataSetChanged();更改阵列适配器时,android,android-arrayadapter,notifydatasetchanged,Android,Android Arrayadapter,Notifydatasetchanged,onei有一个ArrayAdapter,用于实现EditText字段的自动完成建议列表 AutoCompleteTextView ediFrom = (AutoCompleteTextView) findViewById(R.id.ediFrom); ArrayList<String> autoCompleteLib = new ArrayList<String>(); autoCompleteFromAdapter = new AutoCompleteAdapte

onei有一个ArrayAdapter,用于实现EditText字段的自动完成建议列表

AutoCompleteTextView ediFrom = (AutoCompleteTextView) findViewById(R.id.ediFrom);   
ArrayList<String> autoCompleteLib = new ArrayList<String>();
autoCompleteFromAdapter = new AutoCompleteAdapter(this, android.R.layout.simple_dropdown_item_1line, autoCompleteLib);
ediFrom.setAdapter(autoCompleteFromAdapter);
现在我想更新自动完成建议列表。在所有添加操作完成后调用一次“notifyDataSetChanged()”是否足够/正确,或者在每次“autoCompleteLib.add”之后调用“notifyDataSetChanged()”


thx以获取帮助

如果要为添加的每一行更新适配器,请为添加的每一行调用
notifyDataSetChanged()
。如果没有,请在工作完成后调用
notifyDataSetChanged()


这取决于你想要什么,但我建议你只打一次电话。例如,如果您将有数百万行,那么每次在适配器中添加新项时调用notify方法是非常糟糕的。

如果您想为添加的每一行更新适配器,请为添加的每一行调用
notifyDataSetChanged()
。如果没有,请在工作完成后调用
notifyDataSetChanged()

这取决于你想要什么,但我建议你只打一次电话。例如,若您将有数以百万计的行,那个么每次将新项添加到适配器时调用notify方法是非常糟糕的

在所有添加操作完成后调用一次“notifyDataSetChanged()”是否足够/正确,或者在每次“autoCompleteLib.add”之后调用“notifyDataSetChanged()”

notifyDataSetChanged()
告诉ListView(或GridView等)重新绘制整个视图组,这可能会很慢,并且仅当您希望实际查看每个更改时才应使用

如果您只是批量添加一组项,我建议您在完成对数据集的更改后调用它一次,没有理由在幕后为每次更改调用
notifyDataSetChanged()

在所有添加操作完成后调用一次“notifyDataSetChanged()”是否足够/正确,或者在每次“autoCompleteLib.add”之后调用“notifyDataSetChanged()”

notifyDataSetChanged()
告诉ListView(或GridView等)重新绘制整个视图组,这可能会很慢,并且仅当您希望实际查看每个更改时才应使用


如果您只是批量添加一组项目,我建议您在完成对数据集的更改后调用它一次,没有理由在后台为每次更改调用
notifyDataSetChanged()

我知道此线程很旧,但我遇到了类似的问题,您所说的完全正确,但是如果用户在列表视图的内容发生更改时滚动该怎么办。它会导致一个非法的状态异常。调用
notifyDatasetChanged()
之前完全替换列表是否是一个好的解决方法?我知道此线程很旧,但我遇到了一个类似的问题,您所说的完全正确,但是如果用户在列表视图的内容发生更改时滚动列表视图,该怎么办。它会导致一个非法的状态异常。在调用
notifyDatasetChanged()
之前完全替换列表是否是一个好的解决方法?
synchronized (lock)
{
autoCompleteLib.add(newAddress);
}