【问题标题】:how to save data in autocomplete textview如何在自动完成文本视图中保存数据
【发布时间】:2012-01-05 09:16:28
【问题描述】:

我正在使用自动完成文本视图我希望当用户在自动完成文本视图中输入数据时,它会自动保存在自动完成文本视图使用的适配器中,并且下次当用户搜索相同的内容时,用户可以获得相同的结果适配器中的东西 例如,我正在为出租车制作一个应用程序,因此客户必须输入起点假设它不存在于适配器中客户写地址但下一个客户尝试前往相同的位置它输入的位置应该是下拉我没有想法如何做到这一点 谁能帮帮我提前谢谢!

【问题讨论】:

    标签: android android-layout autocomplete autocompletetextview


    【解决方案1】:

    这取决于您从何处加载数据。 你需要做的是在你的 AutoCompleteTextView 上设置一个监听器。

        autocomplete.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                //Todo update data in adapter
            }
        });
    

    如果您从数据库中获取数据,您可能正在使用SimpleCursorAdapter

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(activity, R.layout.name_id_list_item,
                                                              cursor, new String[]{"name"},
                                                              new int[]{android.R.id.text1});
    

    因此,您的点击方法会将数据写回数据库。 棘手的部分是您需要更新适配器才能填充新数据。

    您可以通过重新创建适配器并将其设置为您的 AutoCompleteTextView.setAdapter() 来做到这一点

    【讨论】:

      【解决方案2】:

      此示例说明如何使用 SharedPreferences 为用户保存数据。

      加载用户过去输入的数据:

          public void loadSavedLines() {
              SharedPreferences settings = getSharedPreferences("data", 0); 
              int size = settings.getInt("size", 0);      
      
              if (size != 0) {                    
                  String[] history = new String[size];        
      
              for (int i = 0; i &lt; size; i++) {     
                  history[i] = settings.getString(String.valueOf(i+1), "empty");  
              }
      
              AutoCompleteTextView autoComplete= (AutoCompleteTextView) findViewById(R.id.autoComplete);    
              ArrayAdapter adapter = new ArrayAdapter(this, R.layout.simple_my_dropdown, history);
              autoComplete.setAdapter(adapter);
              autoComplete.setText(saved_uri); 
          }
      

      检查不存在后保存:

      public void checkThanSaveLine(String new_line, AutoCompleteTextView autoComplete) {
          SharedPreferences settings = getSharedPreferences("data", 0);
          int size = settings.getInt("size", 0);
          String[] history = new String[size+1];      
          boolean repeat = false;
          for (int i = 0; i < size; i++) {                
              history[i] = settings.getString(String.valueOf(i+1),"empty");
              if (history[i].equals(new_line.toString())) {
                  repeat = true;
              }
          }
          if (repeat == false) {
              SharedPreferences.Editor editor = settings.edit();      
              editor.putString(String.valueOf(size+1), new_line.toString() );
              editor.putInt("size", size+1);
              editor.commit();
              history[size] = new_line.toString();                
              ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.simple_my_dropdown, history);
              autoComplete.setAdapter(adapter);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-29
        • 2015-12-07
        • 2012-04-04
        相关资源
        最近更新 更多