寫給自己看的,省的回頭忘了 = =;
聲明:
private int touchedPosition = -1; private int touchedPosition_num = -1;
然後在getView裏面:
edit_price.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) {
// 在TOUCH的UP事件中,要保存當前的行下標
touchedPosition = position; touchedPosition_num = -1;
//主要是這裏哈,點了第一個editText就要把第二個editText記錄的位置重新賦值。
//你可以打印看看touchedPosition是怎麼變化的。
} return false; } }); edit_number.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { touchedPosition_num = position; touchedPosition = -1; } return false; } }); if (touchedPosition_num != -1 && touchedPosition_num == position) { spec_edit_number.requestFocus();
//要根據位置和當前的行下標手動爲EditText設置焦點
touchedPosition = -1; }else { spec_edit_number.clearFocus(); } if (touchedPosition != -1 &&touchedPosition == position) { spec_edit_price.requestFocus(); touchedPosition_num = -1; }else { spec_edit_price.clearFocus(); }