android - 使用 Cursor Loader 选择 ListView 中的第一项

标签 android listview fragment

我有一个 Android 应用程序(在平板电脑上)使用主从流程在左侧显示预测列表,在右侧显示详细信息。我希望能够在应用程序加载时选择第一项。

我在 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);
    }
}

最佳答案

我会执行以下操作,我已经为一般的 ListView 完成了,应该也适用于 Cursors。

在您的适配器中,为所选位置创建一个字段

public int selectedPos = 0;//use setter/getter eventually

现在确保 listView 的 OnItemClickListener/OnItemSelectedListener 执行以下操作:

<YOUR_ADAPTER_INSTANCE>.selectedPos = positionSelected;

最后,在适配器的 getView() 中,执行以下操作:

if(position == selectedPos) {
   //do what you want to show selection
} else {
   //do what you want for default state of the list items
}

这将确保第一次显示列表时,selectedPos 将为 0,因此将根据上述选择第一个位置。

如果您想通过 orientationChange 等方式保留用户的选择,您只需要确保在“恢复”后将信息传递给适配器。

关于android - 使用 Cursor Loader 选择 ListView 中的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416059/

相关文章:

android - Fragment 中的自定义 ListView 不起作用

java - 无法将上下文转换为 fragment 的 FragmentAdapter 中的 CustomCallBack 接口(interface)

android - 如何在 NavigationView 中添加其他布局

android - AOSP 构建错误

listview - 设置为 Binding 时,MAUI BindingContext 不起作用

android - 抽屉导航 : add headers in listview

android - appcompat 库样式是如何工作的

android - 从任务管理器输入时,Intent 的参数始终保持不变

vb.net - listview平铺布局问题(vb.net)

javascript - 从 XML View SAPUI5 复制列表项