ListView里面有EditTextView,解决弹出键盘后EditView不能获取焦点的问题

虽然ListView里面动态生成EditTextView不是Android UI Friendly, 但是需求就是这样,那就硬着头皮去做了

遇到的问题是点击EditText,键盘弹出后,输入光标会消失,需要再点击一次才能获取光标,这个大概是因为listview不能很好的处理EditText作为item的情况,弹出键盘后应该view是重新生成的。

折腾了一天,解决方案如下:

布局文件(nothing special):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <FrameLayout
        android:id="@+id/booking1_frameLayout"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:background="@drawable/header" >

        <TextView
            style="@style/title_text_style"
            android:text="@string/booking2" />
    </FrameLayout>

    <ListView
        android:id="@+id/book2_listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         android:layout_below="@id/booking1_frameLayout"
        android:divider="@null"
        android:paddingLeft="10dp"
        android:paddingRight="10dp" />

</RelativeLayout>

关键代码:

在listView的adapter的getView方法里:

//点击时记录下现在点击的是哪个EditText,也就是在编辑哪一个EditText
viewHolderChild.name.setOnTouchListener(new OnTouchListener() {

				@Override
				public boolean onTouch(View v, MotionEvent event) {
					if (event.getAction() == MotionEvent.ACTION_UP) {
						touchedPosition = position;
					}
					return false;
				}
			});

			if (touchedPosition == position) {
				// 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。
				viewHolderChild.name.requestFocus();

			}else {
				viewHolderChild.name.clearFocus();
			}

主要是对listview的机制还不很了解。

时间: 2024-08-29 19:04:09

ListView里面有EditTextView,解决弹出键盘后EditView不能获取焦点的问题的相关文章

一个滑动界面,弹出键盘后,页面无法滑动的问题

项目中,布局用scrollview做的,其中的edittext输入完毕后,无法滑动显示被软键盘遮住的页面,软键盘也只能不能在滑动的时候消失,必须点击键盘上面的小三角隐藏. 查了网上的方法,监听了scrollview的触摸事件,来解决了这个问题,滑动的时候,就让软键盘隐藏. // 滑动隐藏软键盘 final InputMethodManager imm= (InputMethodManager) get_Activity().getSystemService(Context.INPUT_METHO

用jQuery解决弹出层的问题

在BS 项目中 经常需要用到这种弹出层.做这种弹出层一般都会遇到下面几个问题:0,弹出层必须定义在input的下边显示.1,点击input弹出div层.2,点击div层外面任何地方,关闭div层.3,ie6下,div层与下拉框的优先级问题. 下面这个例子就是解决这些问题的,大家可以参考参考,有什么更好的解决方案,请留言. 超级简单版 演示:http://cssrain.cn/demo/popDiv/easyPopDiv.html 实例版 演示:http://cssrain.cn/demo/pop

让textField弹出键盘中的return按钮设置为灰色不可点击

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); textField弹出键盘中的return按钮为灰色不可点击 1   2   UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 30)]   3   te

如何解决弹出“密码长度无效”错误的问题

在使用Advanced Office Password Recovery破解office密码的过程中,用户可能因为自身操作错误或者系统原因产生不同的问题,操作错误问题是可以及时修改的,但是系统问题需要耗费更多的时间和精力才能解决.如果在使用Advanced Office Password Recovery过程中弹出“密码长度无效”的错误对话框不用着急,这属于操作错误是可以及时更改的,下面就和大家分享一下如何解决弹出“密码长度无效”错误的问题? 1.产生“密码长度无效”错误的原因 “密码长度无效”

Android ListView两种长按弹出菜单方式

* 知识点1:ListView item:两种长按弹出菜单方式* 知识点2:ListView SimpleAdapter的使用*  知识点 3:在java代码中创建一个ListView*/ -----------------------------------------------------Activity[mw_shl_code=java,true]package org.gxl.com; public class ListOnLongClickActivity extends Activ

使用IHTMLDocument2解决弹出&quot;为了让该网站给你提供个人化信息,是否允许在你计算机放置cookie?&quot;

mshtml可以说是一个不错的解析html利器,对于像我这样一直都是不用webbrowser,直接用socket或者WebRequest进行HTTP通讯 然后再用IHTMLDocument2.write(html)载入得到的html源进行解析. 但是今天碰到一个问题,就是载入html到IHTMLDocument2后,弹出了下面的框. 搜了一下,貌似只有看见人问,没有看到解决办法,其实也就是很简单的事情,只需要载入前使用下面一句代码: html = html.Replace("script&quo

android自定义键盘(解决弹出提示的字体颜色问题)

最近准备要做一个项目,需要用到自定义小键盘来确保安全,而且还需要精确获得用户点击键盘时的落点位置.力度.指尖接触屏幕的面积等参数. 在写自定义键盘的时候,用到了国内网上的一些代码,出处是 http://blog.csdn.net/hfsu0419/article/details/7924673 向先人致敬! 然后发现down下来的代码用到我的项目时,出现了各种问题: 1.首先,是一打开应用,就会出现弹出的是系统的输入法键盘,而是不自定义键盘,这个问题是由于EditText会在应用打开的使用获得焦

解决弹出层打印问题

jsp页面使用了一个layer插件来做弹出层:并且要求打印弹出层里面的内容. 直接使用window.print()方法打印不出所有的页面内容,仅仅是打印了当前屏幕内容. 我的解决办法是 获取body中所有代码,新建一个空白页面,调用document.write()方法写入, 再打印该页面,实现了正常的分页打印效果. function print(){ var bd=document.body.innerHTML; w=window.open('about:blank'); w.document.

bootstrap 解决弹出窗口(modal) 常见问题

无法使用键盘esc关闭窗口方法: 首先在modal容器的div中增加属性tabindex="-1",其次设置键盘ESC属性keyboard为true: 方法1:使用js打开窗口时 $("#modal").modal({keyboard:true}) 方法2:使用H5属性在modal窗口的div中增加data-keyboard="true": 点击弹出框(modal)外空白处会关闭弹出窗口(modal): 使用backdrop属性,如果希望有背景则