写给自己看的,省的回头忘了 = =;
声明:
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(); }