2017-06-10 29 views
0

我想对我的应用程序执行搜索操作,并且我使用的AutoCompleteTextView使用多个存储在资源上的字符串数组,我这样做:使用多个资源字符串数组的AutoCompleteTextView

List<String> list = new ArrayList<>(); 

String[] array1 = getResources().getStringArray(R.array.array1); 
String[] array2 = getResources().getStringArray(R.array.array2); 
... 

list.addAll(Arrays.asList(array1)); 
list.addAll(Arrays.asList(array2)); 
... 

AutoCompleteTextView autoView = (AutoCompleteTextView) findViewById(R.id.auto_complete); 

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list); 

autoView.setAdapter(adapter); 

它很好用,但我的性能和内存我的应用程序,因为每个数组上很多itens(总共超过400),所以我想知道是否创建一个列表来添加所有itens(就像我在做什么)可能占用太多内存? 这样我做的是错的还是对的?可能会损害应用程序性能?

任何人都知道吗?

Thx

+0

你可以使你的自动完成文本视图更高效。看看这个线程: https://stackoverflow.com/questions/30910098/efficient-autocompletetextview – sumit

回答

1

它不会产生太多问题。它只是消耗一点记忆。我使用Auto Complete TextView在列表中使用了大约8000个项目,这对我来说工作正常。 如果您担心这件事,只需在两种情况下检查设备监视器上的内存使用情况。 您可以这样做:

  • 通过ADB连接您的设备。
  • 运行您的应用程序。
  • 打开Logcat/Android Moniter。
  • 转到监视器选项卡。
  • 在监视器选项卡中,您可以看到CPU,内存&网络使用情况。

希望这会有所帮助。

+0

Thx为您的帮助,顺便说一句,你知道我必须做的,使屏幕尽快出现键盘与autoCompleteTextView出现?我试图在autoCompleteTextView上添加'android:focusableI =“true”'和'android:focusableInTouchMode =“true”'但没有工作:(而且当我点击完成时键盘也不会消失......为什么? – Anita