我有一个GridView,我根据从事务中收到的内容填充EditText。我想把焦点放在右边的EditText或下面第一行的EditText上,如果焦点是行的最后一行。
我做了这段代码来改变焦点:
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
if (position != editTexts.size() - 1) {
EditText temp = editTexts.get(position+1);
temp.requestFocus();
} else {
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
}
return true;
}
return false;
}
});
问题在于,不是将一个直接聚焦在右边,而是从聚焦的一个右下角选择一个(见图)
每个单元格的editText仅在editTexts ArrayList中保存一次。