有 ListView 和HeaderView,当我使用 setSelection API 设置索引时,它会将错误(少 1 个)索引设置为选定索引。
以下是代码片段:
final ListView lst = (ListView)findViewById(R.id.listView1);
LinearLayout headerLayout = new LinearLayout(this);
headerLayout.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.WRAP_CONTENT,ListView.LayoutParams.WRAP_CONTENT));
headerLayout.setId(9);
lst.addHeaderView(headerLayout, null, false);'code'
例如
listView.setSelection(6);
Button btn6 = (Button)findViewById(R.id.button6);
btn6.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
lst.setSelection(6);
View v1 = lst.getChildAt(0);
int top = (v1 == null) ? 0 : v1.getTop();
lst.setSelectionFromTop(6, top);
//lst.setSelection(6);
}});
这会将焦点设置为选定项目的第 5 个位置项目。
我试过了
View v1 = listView.getChildAt(0);
View n = lst.findViewById(9); // 9 is id of listView's header.
listView.setSelectionFromTop(6, n.getMeasuredHeight());
和
View v1 = listView.getChildAt(0);
int top = (v1 == null) ? 0 : v1.getTop();
listView.setSelectionFromTop(6, top);
但这也行不通。