как сохранить данные в автозаполнении просмотра текста - PullRequest
0 голосов
/ 24 ноября 2011

Я использую текстовое представление автозаполнения. Я хочу, чтобы, когда пользователь вводит данные в текстовое представление автозаполнения, оно автоматически сохранялось в адаптере, который используется текстовым просмотром автозаполнения, и в следующий раз, когда пользователь будет искать то же самое, пользователь может получить то же самое. вещь в адаптере Например, я делаю приложение для такси, поэтому клиент должен ввести начальную точку, если он отсутствует в адаптере. Клиент пишет адрес, но следующий клиент попытался перейти в то же место, где он входит в то место, где он должен быть, и в выпадающем меню у меня нет идея как это сделать Кто-нибудь может мне помочь Спасибо заранее!

Ответы [ 2 ]

1 голос
/ 05 декабря 2013

В этом примере показано, как сохранить данные для пользователя с помощью 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);
    }
}
0 голосов
/ 05 февраля 2012

Это зависит от того, откуда вы загружаете свои данные. Что вам нужно сделать, так это установить прослушиватель в вашем 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...