0

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

4

2 回答 2

1

此示例显示如何使用 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 < 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);
    }
}
于 2013-12-05T18:05:36.510 回答
0

这取决于您从哪里加载数据。你需要做的是在你的 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()

于 2012-02-05T03:32:05.780 回答