遇到一个很奇怪的问题,感觉万能的listview.setselection()不起作用,并且同样奇怪的是listview压根没有进入他的监听OnItemSelectedListener中去,而且onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3)方法中发现arg2的值与应该赋予的值不同,这是为什么呢?
在网上找了N多资料,N多方法如:
1.将listView的刷新放在post中去,或者是用post的方式去刷新数据,均起不到作用,问题同样存在
2.将listView.setselection()放在post的runnable中去,同样起不到任何作用
真正起到作用的是:
hListView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if(selectId == 0 && arg2 != 0 ){//此if条件即是问题的关键
hListView.setAdapter(adapter);
hListView.setSelection(selectId);
return ;
}
selectId = arg2 ;
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});