0

私はオートコンプリートTextViewを使用しています。ユーザーがオートコンプリートテキストビューにデータを入力すると、オートコンプリートTextViewで使用されるアダプターに自動的に保存され、次回ユーザーが同じものを検索すると、ユーザーは同じものを取得できますアダプター たとえば、私はタクシー用のアプリを作成しているので、顧客は出発点を入力する必要があります。アダプターに存在しないと仮定します。顧客は住所を書きますが、次の顧客は同じ場所に行こうとしました。これを行う方法がわかりません 誰か助けてくれませんか よろしくお願いします!

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 に答える