我正在使用自动完成TextView我希望当用户在自动完成文本视图中输入数据时,它会自动保存在Autocomplete TextView使用的适配器中,下次当用户搜索相同的内容时,用户可以获得相同的内容适配器中的东西 例如我正在为出租车制作一个应用程序,所以客户必须输入起始点,假设它不存在于适配器客户写入地址但下一个客户试图去相同的位置它进入该位置它应该是它下拉我没有想法如何做到这一点 任何人都可以帮助我提前谢谢!
答案 0 :(得分: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);
}
}
答案 1 :(得分: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});
因此,您的on click方法会将数据写回数据库。 棘手的部分是您需要更新适配器以便填充新数据。
您可以通过重新创建适配器并将其设置为AutoCompleteTextView.setAdapter()