0

我有一个EditText用作. 我正在尝试访问焦点/失去焦点事件,但由于某种原因,每个焦点都会触发多次。这里发生了什么?ViewListView

// in onCreate

// ...

// the footer
View v = getLayoutInflater().inflate( R.layout.comment_edittext, null );

EditText commentEditText = (EditText)v.findViewById( R.id.comment_edittext );
commentEditText.setOnFocusChangeListener( new OnFocusChangeListener() {

    @Override
    public void onFocusChange( View v, boolean hasFocus )
    {
        U.log("View: " + v.getClass().getName().toString() );

        if( hasFocus )
        {
            U.log( "Clicked" );
        }
        else
        {
            U.log( "Un Clicked" );
        }
    }
} );

// add the footer
commentListView.addFooterView( v );

// ...

单次触摸会调出键盘的输出是:

04-11 10:22:17.449: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.459: E/004 - X(4576): Clicked
04-11 10:22:17.569: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.569: E/004 - X(4576): Un Clicked
04-11 10:22:17.569: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.569: E/004 - X(4576): Clicked
04-11 10:22:17.689: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.689: E/004 - X(4576): Un Clicked
04-11 10:22:17.709: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.709: E/004 - X(4576): Clicked

我可以理解它使用hasFocusset to调用多个事件true,但为什么还有falses,触发Un Clicked日志?

编辑:此外,每当我ListView向上和向下滚动,移入EditText和移出视图时,它也会调用这些事件。我是否使用了错误的侦听器类型?

4

3 回答 3

1

从个人经验来看,ListViews 中的 EditTexts 是个祸根。由于视图被回收和渲染的方式,焦点表现得很奇怪。我建议以其他方式解决问题。实际上,如果是评论文本框,如果它总是可见不是更好吗?

样本布局:

  <LinearLayout 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"> 
    <ListView 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1"/> 
    <EditText 
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"/>  
  </LinearLayout>
于 2012-04-11T15:40:20.183 回答
1

改用 GridView 并给出 1 的 numColumns。如果您不喜欢它在 java 类中的读取方式,请将它们存储为 AbsListView(并将它们作为 GridView 保存在您的 xml 中)。

ListView 与 EditTexts 有问题,GridViews 没有这些问题。

于 2013-11-13T19:17:19.123 回答
0

使用 numColumns 为 1 的 Grideview 是解决问题的完美方法。我已经尝试过并解决了我的问题。

于 2016-10-14T09:07:31.473 回答