在expandable listview上调用setOnItemSelectedListener

时间:2014-05-27 11:28:57

标签: android listview expandablelistview

我有一个expandableListView,默认情况下,我希望选择第一个parentgroup,即位置0。所以它调用我的setOnItemSelectedListener。以下是我设置适配器并选择监听器的方法:

adapter = new ExpandableListAdapter(getApplicationContext(),
                lstEpisodes, list);
        list.setAdapter(adapter);

list.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(),
                        "focus on: " + position, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }
        });

这是listview的xml布局:

<LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <ExpandableListView
                android:id="@+id/exlist"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:childDivider="#FFFFFF"
                android:choiceMode="singleChoice"
                android:divider="@android:color/transparent"
                android:groupIndicator="@null" >
                <requestFocus />
            </ExpandableListView>
        </LinearLayout>

这是我到目前为止所尝试的:

list.setSelection(0);
list.requestFocus();
list.invalidate();

如何选择listview的第一行,这是设置适配器时的默认选择..?

1 个答案:

答案 0 :(得分:1)

这可能是解决问题的一种黑客方式,但它会起作用。在局部变量中捕获匿名OnItemSelectedListener接口,在setOnItemSelectedListener方法中分配它。您可以在局部变量上使用setOnGroupClickListener而不是onGroupClick。您可以访问所有需要传入的变量。这应该用作绝对的最后手段。