目前,我正在循环遍历动态数组列表,并从其数据中构建带有开关和编辑文本的 ListView 。
for (int i = 0; i < response.size(); ++i) {
...
xxx.SetId(i)
...
}
如果 Edittext 位于第一个位置,这是我的工作解决方案:
if (i == 0 ) {
editText.requestFocus();
getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
但是如何将焦点设置在第一个可用的 Edittext 上呢?例如两次切换后的第三个位置? (位置根据arraylist动态变化)
最佳答案
通常,您应该在附加到 ListView 的 Adapter 中填充和设置任何所需的状态。一个简单的解决方案是:
public class MyAdapter extends Adapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = layoutInflator.inflate(R.layout.somelayout, parent, false);
// position is zero-based so 3rd item is at position 2
if (position == 2) {
view.findViewById(R.id.edittext).requestFocus();
}
return view;
}
}
要将 ListView 滚动到第 3 个项目,您可以调用 listView.setSelection(2)
。
关于android - 在动态 ListView 中的第一个 EditText 上设置 RequestFocus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18135790/