android 获取listview焦点,Android ListView中EditView再次焦点获取

问题:在ListView中使用EditView,当第一次将焦点给到EditView的时候弹出小键盘。使得EditView失去焦点。

分析:因为在第一次使用EditView弹出小键盘之后,会重新的调用一次getView方法。使得EditView失去焦点。当第二次点击EditView时,已经存在小键盘所以不会调用getView方法,因此也不会失去焦点。

思路:在每次点击EditView的时候,记录当前点击的View的position同时记录EditView的光标偏移位置。在下次调用getView的时候把这个记录同时处理。

定义两个标记位

private int selectIndex = -1;//当前item的位置

private int currentSelection = 0;//偏移量

然后在getView中添加EditView焦点变化的事件,用来记录标记位

adHolder.edtPrice.setOnFocusChangeListener(newOnFocusChangeListener() {

@Overridepublic void onFocusChange(View view, booleanarg1) {if(arg1==false){

selectIndex=position;

currentSelection=((EditText)view).getSelectionStart();

Log.i(TAG,"Item位置:"+position +", 焦点位置:"+currentSelection);

}

}

});

在重新绘制View的时候使用该标记位

if(position ==selectIndex){adHolder.edtPrice.requestFocus();

adHolder.edtPrice.setSelection(currentSelection);

}

原文:http://www.cnblogs.com/chenjianxiang/p/3946083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值