键入内容后编辑文本失去焦点

时间:2018-09-30 18:08:06

标签: android adapter expandablelistview

我在列表视图的适配器类中夸大了编辑文本。视图看起来很酷,多个编辑文本可以正确显示,但是当我确实专注于编辑文本或者如果我尝试键入某些内容而失去焦点时,我尝试添加侦听器,更改清单文件,但对我没有用。

以下代码对我不起作用

@Override
 public View getChildView(int position, int i1, boolean b, View view, 
 ViewGroup viewGroup) {
 EditText comment = view.findViewById(R.id.txtRecordComment);

 comment.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    if (lastFocussedPosition == -1 || lastFocussedPosition == position) {
                        lastFocussedPosition = position;
                        edittext.requestFocus();
                    }
                }
            }, 200);

        } else {
            lastFocussedPosition = -1;
        }
    }
});

   return view;
}

请帮助我解决此问题

2 个答案:

答案 0 :(得分:0)

在Android清单文件中添加以下代码

<activity android:name=".ActivityName"
      android:label="@string/app_name"
      android:windowSoftInputMode="adjustPan">

希望这会起作用

答案 1 :(得分:0)

由于您使用的是ListView,所以它必然会在当前的代码实现中发生。

您必须记住,如果您的EditText位于ListView中,则每次按下键都会导致编辑文本丢失并获得焦点,因为所有视图都被重绘,因此代表以前要聚焦的行的编辑文本现在是一个完全不同的对象。

要获得预期的行为,请在适配器中声明一个变量:int focusedRow。在适配器的getView方法中,向EditText添加onFocusChanged侦听器,然后当该编辑文本获得焦点时,将focusRow =设置为焦点EditText所在的任何行。

还可以将currentFocusedRow中的所有编辑文本设置为焦点。

更新

如果您有多个EditText,请向每个编辑文本添加一个onFocusChanged侦听器。