温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

EditText控件的文本如何自动填充历史记录

发布时间:2024-08-20 17:25:24 来源:亿速云 阅读:84 作者:小樊 栏目:移动开发

要实现EditText控件的文本自动填充历史记录,可以通过以下步骤实现:

  1. 创建一个包含历史记录的数据源,例如一个字符串数组或是一个列表。
  2. 使用SharedPreferences来保存和读取历史记录数据,确保在应用关闭后数据不会丢失。
  3. 在EditText控件上设置一个监听器,监听用户的输入,并根据输入的内容动态过滤历史记录数据。
  4. 当用户点击输入框时,显示历史记录数据作为提示。
  5. 当用户选择历史记录中的某一项时,将该项的文本填充到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控件中,并将该项添加到历史记录的第一位。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI