确定在焦点上选择了哪个EditText字段

时间:2014-09-10 16:35:41

标签: android android-tablelayout

我有一个包含多行的表,每行包含一个与维度对应的EditText。我想要某种监听器,它将返回当前选择的EditText。是否可以使用getCurrentFocus();onFocusChange();

完成此操作

我的想法是让用户选择/聚焦他们想要编辑的维度字段,然后使用来自设备陀螺仪的输出斜率/角度在写入数据时完成该字段"按下按钮。我可能会使用selected_dimension_edittext.setText(gyro_value);

执行此操作

2 个答案:

答案 0 :(得分:0)

如果editTexts在ArrayList中,您可以将标记传递给作为索引的每个editText。 例如:

for(int i=0;i<editTextList.size();i++){
    editTextList.get(i).setTag(i);
}

然后,您可以通过阅读标签来检查更改或选择了哪个EditText的监听器(textChangedListener或TextWatcher - &gt; http://lecturesnippets.com/android-textchanged-listener-textwatcher/)。只需遍历editTextList并调用setText() - 如果编辑文本具有所选标记,则调用方法。

答案 1 :(得分:0)

您可以通过视图ID了解哪个EditText具有Focus:

    EditText edText1 = (EditText)findViewById(R.id.editText1);
    EditText edText2 = (EditText)findViewById(R.id.editText2);

    OnFocusChangeListener mFocusChangeListener = new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(hasFocus){ //Check if View has focus
                switch (v.getId()){
                    case R.id.editText1: {
                        //Code A
                    } break;
                    case R.id.editText2: {
                        //Code B
                    } break;
                }
            }
        }
    };

    edText1.setOnFocusChangeListener(mFocusChangeListener);
    edText2.setOnFocusChangeListener(mFocusChangeListener);