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