- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个用数据填充的 ListView 。用户可以长按某一行,它会高亮显示,上下文操作栏也会显示它已被选中。如果用户选择更多行,则上下文操作栏中选择的行数会增加。但是,一旦我改变设备的方向,突出显示就会消失,但列表项显示为已选中。我试过使用选择器,但没有用。在 XML 中,我使每一行都将 activatedBackgroundIndicator 作为其背景。
有谁知道为什么高光会消失?谢谢。
这是 onSaveInstanceState 代码:
@Override
public void onSaveInstanceState(Bundle outState) {
//check if any items are selected
if (listView.getCheckedItemCount() > 0) {
//get the list of selected items and convert it to an int Array
//because SparseBooleanArray cannot be stored in a bundle
SparseBooleanArray selectedItems = listView.getCheckedItemPositions();
int[] selectedItems_intArray = new int[listView.getCheckedItemCount()];
for (int i = 0; i < selectedItems.size(); i++) {
if (selectedItems.valueAt(i) == false)
continue;
selectedItems_intArray[i] = selectedItems.keyAt(i);
}
outState.putIntArray("Selected Items", selectedItems_intArray);
}
}
这是 onCreate 中的代码:
if (savedInstanceState != null) {
int[] checkedItems = savedInstanceState.getIntArray("Selected Items");
if (checkedItems != null) {
for (int i = 0; i < checkedItems.length; i++) {
listView.setItemChecked(checkedItems[i], true);
adapter.setNewSelection(checkedItems[i], true);
}
}
}
编辑:
这是 ListView Activity 的部分:
<activity
android:name="com.newapp.MainListActivity"
android:label="@string/app_name"
android:configChanges="orientation"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
最佳答案
当您旋转设备时,当前 Activity 将被销毁并重新创建。
您可以将所选元素存储在 onPause() 中,然后在 onResume() 中选择它,或者您可以使用更简单的解决方案:不允许 Android 在设备旋转时破坏您的 Activity。
为此,您可以将 AndroidManifest 添加到该 Activity 的部分:
<activity android:configChanges="orientation|screenSize"
...
</activity>
注意:如果需要,您也可以对整个应用程序执行相同的操作(将相同的 android:configChanges="orientation|screenSize"
添加到 application
部分)。
编辑:
我的第一个答案是使用 android:configChanges="orientation"
。我的第二个是使用 android:configChanges="orientation|screenSize"
。
对于那些想知道为什么的人来说,事情很简单:
将方向
添加到 list 中,就是在告诉 Android“不用担心方向变化,我可以处理”。因此,当设备的方向发生变化时,Android 无需担心销毁和重新创建 Activity。
将 screenSize
添加到 list 中,就是在告诉 Android“不要担心屏幕尺寸的变化,我可以处理”。在我们的案例中这不是必需的,但它可以。原因是某些版本的 Android(我真的不记得是哪些)对此有点愚蠢。当你有一个垂直位置的设备时,它有 480x800 像素;当你把它放在水平位置时,它有 800x480 像素。因此,屏幕尺寸确实发生了变化。某些版本的 Android 足够聪明,可以识别这种“屏幕尺寸变化”,因此他们将其视为 android:configChanges="orientation"
设置的一部分;某些 Android 版本不是那么聪明,您必须同时指定两者。
注意:当您使用这种技术时,请注意 Android 不会处理设备旋转。因此,如果纵向模式和横向模式的布局不同,则必须自己更改(但我建议不要使用这种方法,即使只有一种布局类型的应用程序更容易)。
关于java - 如何在android中设备方向改变后保持listview项目的高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026545/
我正在使用http://plugins.jquery.com/project/maphilight用于当我将鼠标悬停在图像 map 上时突出显示区域,但我也想在单击时保持其突出显示。单击另一区域时,前
所以目前,我正在尝试为三个 TextView 创建一个选定状态 目前,对于每个 TextView ( H M S ),文本都是红色的: 但是,当点击 H M 或 S 时,我希望它变成另一种颜色——白色
我们正在尝试添加一些与我们网站的访问者相关的视觉统计数据。我们现在关注访问者的位置。 我们想要创建一个 map (通过 jquery 插件): a) 在 map 上显示输入的 IP 的位置,或者如果第
我在 stackoverflow 上阅读了几个关于 RecyclerView 中项目突出显示的问题,但我什么也做不了,但我的问题应该更容易,因为我只想突出显示一个项目。我成功地做了一些事情,但它也突出
我正在使用 ElasticSearch 来索引文档。 我的映射是: "mongodocid": { "boost": 1.0, "store": "yes", "type": "strin
所以,这不是绝对需要,但我很好奇,如果它存在,我可能会想在某个时候使用它...... 我开发了一个网站(不是我的设计),其中某些文本区域有文本阴影,我注意到当突出显示所述文本时,它不是很清晰。我知道并
我并排显示了以下三个元素: Title T1 T2 T3 我想在用户点击后突出显示该元素(例如 T1)。类似于 stackove
我试图很好地显示 NSTextView 中突出显示的段落。现在,我通过创建一个带有背景颜色的 NSAttributedString 来做到这一点。这是一些简化的代码: NSDictionary *at
我怎样才能让我的类被突出显示为一个普通的原始类型,比如 int 或 double? 看一个例子: 当我声明 Test aloha; 时,我想要那个测试以与 int a 相同的方式突出显示. 最佳答案
我不介意语法着色,但我发现 Notepad++ 突出显示整个 Javascript 代码块,有效地使它们变暗并使其难以阅读,这非常烦人。它看起来像这样: 正如您所看到的,它用紫色遮盖了整个 JavaS
我想根据路由切换 routerLinkActive 的突出显示,我有一个仪表板组件,仪表板菜单项和标签菜单项都引用同一个组件,我想根据路线向 li 元素添加类对于仪表板,路线将是 http://loc
试图摆脱 IE 中的蓝色突出显示。这是一个选择标签。当您下拉下拉框并选择一个选项时,会出现蓝色突出显示。我在 Mac 上并且没有 IE,所以我无法测试它。它只是背景颜色:透明吗? 这是我所看到的图像。
我最近获得了 Microsoft Visual Studio 2015 企业 RC。在此屏幕截图中,我使用的是 C#。我突出显示了括号,但这些括号内的 block 没有像在 Visual Studio
有谁知道是否有任何 Sublime Text 2 包可用于为 SpecFlow/Gherkin 规范文件启用语法高亮显示? 最佳答案 有一些解决方案可以将 Sublime Text 与 Gherkin
我是 Elasticsearch 的新手。我希望在 Java 客户端中突出显示字段。如果我在 Windows 提示符下运行以下查询: { "query": { "filtere
如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份) "==========================================================
我正在 Eclipse 中使用 PhoneGap for Android 编写一个应用程序。由于项目是Android项目,所以是Java视角。无论出于何种原因,Eclipse 都不会为我突出显示 HT
狼群! 我想突出显示我悬停的任何元素,就像 Chrome 开发工具所做的那样。 Picture of Chrome Dev Tools 请注意整个元素是如何浸透在蓝色调中的?这不像添加背景颜色或线性渐
我是一名优秀的程序员,十分优秀!