您的位置:首页 > 移动开发 > Android开发

解决listview里面edittext焦点问题

2017-07-04 15:02 363 查看
由于每次弹起输入框,输入法,listview的界面都会重置布局导致edittext失去焦点,或者焦点错乱所以我们必须在listview里面对edittext特殊处理由于重置布局,必须走getview里面的代码,我们可以在getview里面标记光标位置,在getview结束前重新设置焦点问题完美解决
//设置edittext的输入改变监听    
vh.guige_kuncun_item.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
vh.guige_kuncun_item.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {

if (s.length() == 0) {
guigelist.get(position).setGuige_kucun(0);
ShowToast("请设定规格库存!");
} else
guigelist.get(position).setGuige_kucun(Integer.parseInt(s.toString()));
index=position;
}
});
}
}
});
//            vh.guige_price_item.addTextChangedListener(new MyTextWatcher(vh,0));
//            vh.guige_kuncun_item.addTextChangedListener(new MyTextWatcher(vh,1));
记录光标 焦点位置vh.guige_kuncun_item.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubif (event.getAction() == MotionEvent.ACTION_UP) {index = position;priceitem=-1;Log.i("0302", "onTouch"+index);}return false;}});vh.guige_price_item.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubif (event.getAction() == MotionEvent.ACTION_UP) {priceitem = position;index=-1;Log.i("0302", "onTouch"+index);}return false;}});vh.guige_price_item.clearFocus();vh.guige_kuncun_item.clearFocus();
重置焦点if (priceitem != -1 && priceitem== position) {// 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。vh.guige_price_item.requestFocus();}if (index != -1 && index == position) {// 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。vh.guige_kuncun_item.requestFocus();}重置光标vh.guige_kuncun_item .setSelection(vh.guige_kuncun_item .getText().length());vh.guige_price_item .setSelection(vh.guige_price_item .getText().length());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息