我有一个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
的第一行,这是设置适配器时的默认选择..?
答案 0 :(得分:1)
这可能是解决问题的一种黑客方式,但它会起作用。在局部变量中捕获匿名OnItemSelectedListener
接口,在setOnItemSelectedListener
方法中分配它。您可以在局部变量上使用setOnGroupClickListener
而不是onGroupClick
。您可以访问所有需要传入的变量。这应该用作绝对的最后手段。