您好,登錄后才能下訂單哦!
要實現EditText控件的文本自動填充歷史記錄,可以通過以下步驟實現:
以下是一個簡單的示例代碼:
public class MainActivity extends AppCompatActivity {
private EditText editText;
private ArrayAdapter<String> adapter;
private List<String> historyList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
historyList = new ArrayList<>();
// 從SharedPreferences中讀取歷史記錄數據
SharedPreferences sharedPreferences = getSharedPreferences("History", MODE_PRIVATE);
Set<String> historySet = sharedPreferences.getStringSet("history", new HashSet<>());
historyList.addAll(historySet);
// 設置監聽器,監聽用戶輸入
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
List<String> filteredList = new ArrayList<>();
for (String item : historyList) {
if (item.toLowerCase().contains(input.toLowerCase())) {
filteredList.add(item);
}
}
adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, filteredList);
editText.setAdapter(adapter);
}
});
editText.setOnItemClickListener((parent, view, position, id) -> {
String selectedText = adapter.getItem(position);
editText.setText(selectedText);
// 將選擇的歷史記錄添加到第一位
historyList.remove(selectedText);
historyList.add(0, selectedText);
// 保存歷史記錄數據到SharedPreferences
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putStringSet("history", new HashSet<>(historyList));
editor.apply();
});
}
}
在上面的示例中,我們通過SharedPreferences保存和讀取歷史記錄數據,并根據用戶輸入動態過濾歷史記錄數據。當用戶選擇歷史記錄中的某一項時,將該項的文本填充到EditText控件中,并將該項添加到歷史記錄的第一位。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。