標籤:android style blog color os 使用 io ar art
問題:在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(new OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean arg1) { 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);}
Android ListView中EditView再次焦點擷取