我有一個Android應用程序(在平板電腦上)使用主 - 細節流來顯示左側的預測列表以及右側的詳細信息。我希望能夠在應用程序加載時選擇第一項。在Cursor Loader中選擇ListView中的第一個項目
我在設置所選索引的onLoadFinished
方法中有代碼。我實現了這一點,因爲有時用戶會選擇一個項目,如果他們改變了方向,它會被關閉。我用這下面的方法,以確保一旦它加載正確的再次選擇所選項目:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mForecastAdapter.swapCursor(data);
// If we have a selected index - select it.
if(mSelectedIndex != ListView.INVALID_POSITION) {
mForecastListView.setSelection(mSelectedIndex);
}
}
我嘗試添加如果正在使用平板電腦,選擇第一項是檢查的else語句。該代碼已執行,但它似乎發生在實際加載listview和項目未被選中之前。應用程序打開後,我應該在哪裏放置代碼以選擇第一個項目?
編輯 這裏是我都試過了,沒有運氣的方法:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mForecastAdapter.swapCursor(data);
// If we have a selected index - select it.
if(mSelectedIndex != ListView.INVALID_POSITION) {
mForecastListView.setSelection(mSelectedIndex);
} else if(mForecastAdapter.IsTwoPane()){
mForecastListView.setSelection(0);
}
}
您是否有交換而不是更改光標的原因? – 2014-10-21 04:24:45
如果我沒有弄錯,我相信你在使用CursorLoader時需要使用它。不過,我認爲這與我需要做的事情無關。 – AdamMc331 2014-10-21 04:31:33
交換和更改的功能稍有不同,前者保留前一個遊標而不關閉,而後者關閉前一個遊標並將其替換爲新遊標。 – 2014-10-21 04:45:09