private void setListviewSelection(final ListView list, final int pos) {
list.post(new Runnable() {
@Override
public void run() {
list.setSelection(pos);
for (int i = 0; i < list.getChildCount(); i++) {
View v = list.getChildAt(i);
if (i == pos && v != null)
v.setBackgroundColor(Color.argb(200, 51, 181, 229));
else if (v != null)
v.setBackgroundColor(Color.BLACK);
}
}
});
}
這裏是我用來模擬我的音樂播放器中的選擇的代碼。這個想法是,當用戶按Next或Previous按鈕時,一個元素在ListView
中突出顯示,但這不符合我的要求,因爲setSelection
不能順利滾動,基本上某些元素沒有正確突出顯示。爲了更好地解釋,我實際上試圖實現的是一個Winamp應用程序,當您按下一個/上一個按鈕(查看播放列表時)時,該應用程序具有這種滾動方式。Android ListView滾動到位置
使用setSelectionFromTop()
,smoothScrollToPosition()
也沒有正確地工作。
不幸的是,這並沒有爲我的案件工作,突出仍然「跳」從一個元素到另一個。 – tvoloshyn
看起來像** v **正在返回null,即使它實際上可以在列表中看到。 – tvoloshyn
是否有使用線程的原因?您無法從主線程外部更新用戶界面 –