1

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);

しかし、これもうまくいきません。

4

1 に答える 1

0

これを試して int index = 6(this can be any number or value) + 1

listView.setSelection(index);
View v1 = listView.getChildAt(0);
int top = (v1 == null) ? 0 : v1.getTop();
listView.setSelectionFromTop(index, n.getMeasuredHeight());
于 2012-11-06T08:29:57.373 に答える