输入AutoCompleteTextView

时间:2019-03-18 20:12:45

标签: android firebase-realtime-database autocompletetextview

我正在开发天气应用程序,我使用了OpenWeatherMap API。我在搜寻城市时遇到问题。 OpenWeatherMap网站上有一些城市列表,供您使用项目。我正在使用gzip的city_list.gz大约为1 MB。原始文件为4 MB。列表中有20万多个城市。使用以下代码,我将城市添加到Arraylist:

private void bringData() {
    cityList=new ArrayList<>();

    try{
        StringBuilder builder= new StringBuilder();
        InputStream is= getResources().openRawResource(R.raw.city_list);
        GZIPInputStream gzıpInputStream=new GZIPInputStream(is);

        InputStreamReader reader=new InputStreamReader(gzıpInputStream);
        BufferedReader in=new BufferedReader(reader);

        String readed;

        while ((readed=in.readLine())!=null)
            builder.append(readed);
        cityList=new Gson().fromJson(builder.toString(),new TypeToken<List<String>>(){}.getType());

    } catch (IOException e) {
        e.printStackTrace();
    }
}

我在onCreate上调用此方法。我将这个Arraylist用于AutoCompleteTextView来搜索城市。这是我的相关代码:

 etSearchCity=(AutoCompleteTextView)findViewById(R.id.etSearchCity);
    etSearchCity.setRawInputType(InputType.TYPE_CLASS_TEXT |
            InputType.TYPE_TEXT_VARIATION_NORMAL);

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

    etSearchCity.setAdapter(autoComplete);

    etSearchCity.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                long arg3) {

            city=(String) arg0.getAdapter().getItem(arg2);
            btnSaveCity.setVisibility(View.VISIBLE);
            btnCancel.setVisibility(View.VISIBLE);
            tvSearch.setText("Do you want add city: "+city);
            tvSearch.setVisibility(View.VISIBLE);
        }
    });

这些代码在Android Studio上的Android Emulator上正常工作,但是在我的实际设备上活动因AutoCompleteTextView上的第二个或第三个字母而崩溃。我在Logact中遇到以下日志:

I/art﹕ Background sticky concurrent mark sweep GC freed 45388(3MB) AllocSpace objects, 17(292KB) LOS objects, 14% free, 10MB/11MB, paused 20.543ms total 209.212ms

我该如何解决该问题。我可以使用Firebase数据库进行搜索吗?我想建议第二个或第三个输入AutoCompleteTextView的城市。

0 个答案:

没有答案