Android EditText 复制我输入的每个字符

标签 android gridview input android-edittext listadapter

我有几行 EditText 对象,它们由我的自定义 BaseAdapter 类维护。

EditText 对象应该只能接受数字。在显示的图像中,我输入了“12345”。如您所见,我键入的所有内容都会立即被复制。

我发现如果我删除为数字过滤 EditText 的代码行,问题就会消失:

et.setInputType(InputType.TYPE_CLASS_PHONE);

知道发生了什么吗?

我正在使用 TextWatcher 来监听输入,您可以在 getView() 方法中看到它:

public View getView(int position, View convertView, ViewGroup parent) {

            final ViewHolder holder;

            if (convertView == null) {
                convertView = getLayoutInflater().inflate(R.layout.number, null);
                holder = new ViewHolder();              
                holder.editText = (EditText) convertView.findViewById(R.id.number_edittext);
                holder.editText = setEditTextFilters(holder.editText);
                holder.editText.addTextChangedListener(new TextWatcher() {                      
                    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2){}
                    public void onTextChanged(CharSequence s, int start, int before, int count) {}
                    public void afterTextChanged(Editable s) {
                        textBoxStrings[holder.row] = s.toString(); 
                        System.out.println("row: " + holder.row + " " + s.toString());
                    }
                });

                convertView.setTag(holder); 
            }
            else {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.row = position;
            holder.editText.setText(textBoxStrings[holder.row]);

            TextView rowtext = (TextView) convertView.findViewById(R.id.number_rowtext);
            rowtext.setText("Row " + holder.row);
            return convertView;
}

使用以下方法将过滤器添加到 EditText:

public EditText setEditTextFilters(EditText et) {           
        int maxLength = numColsMEM;
        InputFilter[] FilterArray = new InputFilter[1];
        FilterArray[0] = new InputFilter.LengthFilter(maxLength);
        et.setFilters(FilterArray);
        et.setInputType(InputType.TYPE_CLASS_PHONE);
        et.setSingleLine();
        return et;
}

What I see after entering the numbers "12345"

最佳答案

我有一种预感,问题可能是您的 textChangedListener 不应该设置 textBoxStrings[holder.row],因为默认的 textChangedListener 可能已经这样做了。

关于Android EditText 复制我输入的每个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197986/

相关文章:

android - 单选按钮在可触摸设备上不起作用

android - OnProvideAssistDataListener 示例

javascript - 将 Prop 传递给 React 搜索栏的目的是什么?

Internet Explorer 中的 ASP.NET Gridview 水平对齐方式

c# - 在WPF GridView中查找单击元素的索引

html - 为什么 <input> 框字符限制大于接受的表单提交?

c - 在 C 中重定向输入(文本文件)

android - 如何在 Android 上发现 zeroconf (Bonjour) 服务?我在使用 jmDNS 时遇到问题

Android - 如何从命令行在模拟器上运行本地应用程序?

android - 如何为 GridView 的按下状态设置颜色?