【问题标题】:How to clear edit box in grid view如何清除网格视图中的编辑框
【发布时间】:2013-01-25 06:03:14
【问题描述】:

我的活动中有 Gridview。我的 GridView 的数据适配器:

private class EfficientAdapter extends BaseAdapter {
        ...
        public View getView(int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.item3, null);
                holder = new ViewHolder();
                holder.Attitude_Value = (EditText) convertView.findViewById(R.id.editText1);
                holder.Attitude_Value.addTextChangedListener(new TextWatcher()
                    {
                        public void afterTextChanged(Editable edt) 
                        {attitude_values.set(holder.ref, edt.toString());}

            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3){}
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}});
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.ref=position;
            holder.Attitude_Value.setText(attitude_values.get(position));
            return convertView;
        }
   ...

如何在网格视图中清除编辑框,当我专注于它时,然后开始输入?

【问题讨论】:

    标签: android


    【解决方案1】:
    String value = "anyValue";
    
    final EditText et = (EditText) findViewById(R.id.edtText);
    et.setText(value);
    et.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            if (event.getAction() != MotionEvent.ACTION_UP) {
                et.setText(et.getText().toString.trim());
                return false;
            }
    
            if (event.getAction() != MotionEvent.ACTION_DOWN) {
                value = et.getText().toString.trim();
                et.setText("");
                return true;
            }
            return false;
        }
    });
    
    et.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
    
        @Override
        public void afterTextChanged(Editable arg0) {
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
    });
    

    【讨论】:

    • 我尝试了,但实际上我不明白该怎么做。我们无法从 TextWatcher() 中看到持有者?
    • @Ivan Onishchenko 现在试试这个代码。在OnTouchListener 中,当您获得事件操作ACTION_DOWN 时,获取当前值并清除EditText,如果用户无法编辑当前值而只是松开焦点,只需将该值设置回原处,否则设置新文本。
    • 谢谢!当我触摸它时它起作用,但当我按下输入时它不起作用,结束按桌子移动。你能建议方法吗?我添加了 et.RequestFocus(),因为单元格没有聚焦
    • Ivan 如果您正在谈论使用来自软键盘的回车键,您需要为此绑定监听器。喜欢editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_ENTER) { //Do whatever you want return true; } return false; } });
    • 小问题,当我按下回车时,清除单元格,之前的焦点在哪里,然后移动到下一个单元格
    【解决方案2】:

    您是否尝试过这样的方式,我不太确定更改您的 XML Edittext

    android:hint="Something"
    

    试试这个链接example

    et.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            et.setCompoundDrawables(null, null, et.getText().toString().equals("") ? null : x, null);
        }
    
        @Override
        public void afterTextChanged(Editable arg0) {
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
    });
    

    【讨论】:

    • 如果要提示,我如何查看旧数据?
    • @IvanOnishchenko 旧数据意味着什么?
    • @IvanOnishchenko 检查上面的链接希望它可以帮助你
    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多