我有一个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