点击EditText显示最近五条的输入记录的代码如何实现
时间: 2024-05-07 07:18:11 浏览: 22
你可以通过使用SharedPreferences实现显示最近五条输入记录的功能。具体实现方式如下:
1. 在EditText的OnFocusChangeListener中获取SharedPreferences中保存的最近五条输入记录。
2. 将获取到的记录显示在一个ListView或RecyclerView中。
3. 当用户点击某一条记录时,将该记录设置为EditText的文本内容。
以下是具体的实现代码:
```
public class MainActivity extends AppCompatActivity {
private EditText editText;
private ListView listView;
private ArrayAdapter<String> adapter;
private List<String> dataList;
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit_text);
listView = findViewById(R.id.list_view);
preferences = getSharedPreferences("input_history", MODE_PRIVATE);
editor = preferences.edit();
// 获取最近五条输入记录
dataList = new ArrayList<>();
for (int i = 0; i < 5; i++) {
String input = preferences.getString("input_" + i, "");
if (!TextUtils.isEmpty(input)) {
dataList.add(input);
}
}
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);
listView.setAdapter(adapter);
// 设置ListView的点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String input = dataList.get(position);
editText.setText(input);
editText.setSelection(input.length());
}
});
// 设置EditText的焦点监听器
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
String input = editText.getText().toString().trim();
if (!TextUtils.isEmpty(input)) {
// 将新的输入记录添加到SharedPreferences中
for (int i = 0; i < 5; i++) {
String oldInput = preferences.getString("input_" + i, "");
if (input.equals(oldInput)) {
return;
}
}
editor.putString("input_0", input);
for (int i = 1; i < 5; i++) {
String oldInput = preferences.getString("input_" + (i - 1), "");
editor.putString("input_" + i, oldInput);
}
editor.apply();
// 更新ListView的数据
dataList.clear();
for (int i = 0; i < 5; i++) {
String newInput = preferences.getString("input_" + i, "");
if (!TextUtils.isEmpty(newInput)) {
dataList.add(newInput);
}
}
adapter.notifyDataSetChanged();
}
}
}
});
}
}
```
在上述代码中,我们首先获取SharedPreferences实例,并在OnFocusChangeListener中实现了最近五条输入记录的保存和显示。当用户失去EditText的焦点时,我们会将新的输入记录添加到SharedPreferences中,并更新ListView的数据。