Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 多个onFocusChange接收_Android_Listview_Focus - Fatal编程技术网

Android 多个onFocusChange接收

Android 多个onFocusChange接收,android,listview,focus,Android,Listview,Focus,有一段时间我一直在安静地处理一个充满EditText的listview,如果不做一些棘手的事情,我就无法找到完成任务的方法 我使用了一个最小化的项目来简化讨论 我有一个用来询问信息的列表视图。布局部分非常基本: 活动\u main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

有一段时间我一直在安静地处理一个充满EditText的listview,如果不做一些棘手的事情,我就无法找到完成任务的方法

我使用了一个最小化的项目来简化讨论

我有一个用来询问信息的列表视图。布局部分非常基本:

活动\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.beuvelet.myapplication.MainActivity">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="beforeDescendants"/>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout02"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:layout_marginBottom="0dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    android:gravity="center_vertical|center">

    <TextView
        android:id="@+id/textQuestion"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|left"
        android:layout_marginLeft="10dp"
        android:text="texte"
        android:textSize="23sp"/>

    <LinearLayout
        android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|right"
        android:gravity="center_vertical|right">

        <EditText
            android:id="@+id/editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:minWidth="125dp"/>

    </LinearLayout>
</LinearLayout>
我想在失去editText的焦点时验证它的值

问题是,每次我在editText上clic时,都会得到以下日志:

I/System.out: hasFocus
I/System.out: noFocus
I/System.out: hasFocus
I/System.out: noFocus
I/System.out: hasFocus
I/System.out: noFocus
I/System.out: hasFocus
每次它都会通过OnFocusChangeListener 7次。如果侦听器中有一些noFocus事件的验证方法,则可以连续调用3次

为什么有这么多电话

我可以使用变量,保存一些状态,但在我的情况下这会有点棘手,我更愿意尝试理解这种行为

谢谢你的阅读。
(sry代表蹩脚英语:p)

在我的棒棒糖案例中,它在每次按键时都会在列表视图中的所有编辑文本上运行。所以它多次调用焦点更改。这里不是最佳解决方案:。
I/System.out: hasFocus
I/System.out: noFocus
I/System.out: hasFocus
I/System.out: noFocus
I/System.out: hasFocus
I/System.out: noFocus
I/System.out: hasFocus