目前我正在循环动态arraylist并从其数据构建带有开关和Edittexts的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动态变化)
答案 0 :(得分:1)
通常,您应该在附加到 ListView 的适配器中填充并设置任何所需的状态。一个简单的解决方案就是:
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;
}
}
要将列表视图滚动到第3个项目,您可以调用listView.setSelection(2)
。