小编Eye*_*ear的帖子

如何在RecyclerView中的项目之间添加分隔符和空格?

这是一个如何ListView使用dividerdividerHeight参数在类中执行的示例:

<ListView
    android:id="@+id/activity_home_list_view"
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:divider="@android:color/transparent"
    android:dividerHeight="8dp"/>
Run Code Online (Sandbox Code Playgroud)

但是,我没有在RecyclerView课堂上看到这种可能性.

<android.support.v7.widget.RecyclerView
    android:id="@+id/activity_home_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"/>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,可以直接定义边距和/或将自定义分隔视图添加到列表项的布局中,还是有更好的方法来实现我的目标?

android divider android-recyclerview

883
推荐指数
28
解决办法
56万
查看次数

如何在NavigationView中的所有组中设置共享可检查行为?

我创建了两个具有唯一ID的组(我需要一个分隔符),它们都checkableBehavior设置为单一.这允许同时检查来自不同组的多个项目,这正是我想要避免的.我想在所有群组中最多检查一件商品.

由于我还没有找到任何方法在XML中执行此操作,我尝试实现一个简单的逻辑onNavigationItemSelected来取消选中上一个菜单项:

if (previousItem != null)
   previousItem.setChecked(false);
currentItem.setChecked(true);
Run Code Online (Sandbox Code Playgroud)

setChecked(false)方法从来没有对我有用 - 项目保持检查.

这是我的示例代码:

menu_navigation.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
        android:id="@+id/nav_group_1"
        android:checkableBehavior="single">
    <item
            android:id="@+id/nav_feed"
            android:title="@string/feed"/>
    <item
            android:id="@+id/nav_people"
            android:title="@string/people"/>
</group>
<group
        android:id="@+id/nav_group_2"
        android:checkableBehavior="single">
    <item
            android:id="@+id/nav_settings"
            android:title="@string/settings"/>
    <item
            android:id="@+id/nav_help_feedback"
            android:title="@string/help_feedback"/>
    <item
            android:id="@+id/nav_logout"
            android:title="@string/logout"/>
</group>
Run Code Online (Sandbox Code Playgroud)

NavigationItemSelectedListener:

 mUiNavigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) {
                        if (previousItem != null)
                           previousItem.setChecked(false);
                        currentItem.setChecked(true);
                        //...
                        changeCurrentFragment(...);
                        return true;
                    }
                });
Run Code Online (Sandbox Code Playgroud)

我需要一个提示!谢谢.

android android-support-library navigation-drawer material-design navigationview

31
推荐指数
3
解决办法
2万
查看次数

RxJava和缓存数据

我还是RxJava的新手,我在Android应用程序中使用它.我已经阅读了关于这个主题的公吨,但仍然觉得我错过了一些东西.

我有以下场景:

我有数据存储在系统中,可通过各种服务连接(AIDL)访问,我需要从该系统中检索数据(可能会发生1-n次异步调用).Rx帮助我简化了这段代码.但是,整个过程往往需要几秒钟(超过5秒+),因此我需要缓存此数据以加速本机应用程序.

此时的要求是:

  1. 初始订阅时,缓存将为空,因此我们必须等待所需的加载时间.没什么大不了.之后,应该缓存数据.

  2. 后续加载应该从缓存中提取数据,但是应该重新加载数据并且磁盘缓存应该在幕后.

问题:我有两个Observable - A和B. A包含从本地服务中提取数据的嵌套Observable(这里有吨).B更简单.B只包含从磁盘缓存中提取数据的代码.

需要解决:a)返回缓存项(如果已缓存)并继续重新加载磁盘缓存.b)缓存为空,从系统加载数据,缓存并返回.后续调用将返回"a".

我有几个人推荐一些操作,如flatmap,merge甚至主题,但由于某种原因,我无法连接点.

我怎样才能做到这一点?

android caching aidl rx-java

21
推荐指数
1
解决办法
1万
查看次数

"你无法改变私人安全设置" - 如何在Android 6中切换铃声振动?

由于Android 6 Marshmallow最近有关权限的更改,以下代码不再有效并引发异常.

Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 0);
Run Code Online (Sandbox Code Playgroud)

即使在向WRITE_SETTINGS应用授予权限后,也会发生这种情况:

Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
Uri uri = Uri.fromParts("package", getActivity().getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, WRITE_SETTINGS_PERMISSION_REQUEST_CODE);
//at this point Settings activity is opened and user is prompted for permission

...

if (Settings.System.canWrite(this)) { //now returns true, because permissions were granted
    Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 0); //still crashes
} else {
    Log.w(LOG_TAG, "No permission to write settings.");
}
Run Code Online (Sandbox Code Playgroud)

如何在Android 6中更改铃声振动设置(以及类似的安全设置)?

完整堆栈跟踪:

10-12 02:26:37.728 1927-2765/? E/DatabaseUtils: Writing exception to parcel
10-12 02:26:37.728 1927-2765/? E/DatabaseUtils: java.lang.IllegalArgumentException: …
Run Code Online (Sandbox Code Playgroud)

android android-permissions android-6.0-marshmallow

16
推荐指数
2
解决办法
5964
查看次数

为什么我的可穿戴设备未在Google Fit API中列为DataSource?

我正在尝试使用三星Gear Live手表的心率监测器.这款手表配有4.4.4手机,工作正常.我正在关注官方的BasicSensorsApi示例.

我可以使用以下范围成功连接到Google Play服务:

addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE))
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
            .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE))
Run Code Online (Sandbox Code Playgroud)

但是,当我想列出所有可用的心率监测器时,我收到一个空列表DataSource:

private void findFitnessDataSources() {
    Fitness.SensorsApi.findDataSources(mGoogleApiClient, new DataSourcesRequest.Builder()
            .setDataTypes(
                    DataType.TYPE_HEART_RATE_BPM)// At least one datatype must be specified.
            .setDataSourceTypes(
                    DataSource.TYPE_RAW)// Specify whether data type is raw or derived.
            .build())
            .setResultCallback(new ResultCallback<DataSourcesResult>() {
                @Override
                public void onResult(DataSourcesResult dataSourcesResult) {
                    for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                        if (dataSource.getDataType().equals(DataType.TYPE_HEART_RATE_BPM)
                                && mListener == null) {
                            registerFitnessDataListener(dataSource,
                                    DataType.TYPE_HEART_RATE_BPM);
                        }
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

DataType例如,如果我更改为,TYPE_STEP_COUNT_CUMULATIVE或者TYPE_LOCATION_SAMPLE,列表将包含我的手机,这似乎是合乎逻辑的.

为什么手表没有被列为可用DataSource呢?

请注意:这不是重复: …

android heartbeat google-fit wear-os

8
推荐指数
1
解决办法
1857
查看次数

触发心率检查的语音命令列表

使用vnd.google.fitness.VIEWaction和vnd.google.fitness.data_type/com.google.heart_rate.bpmmime类型创建intent的所有现有语音命令的列表是什么?

文档显示其中两个:

  1. "好吧谷歌,我的心率是多少?"
  2. "好的Google,我的bpm是什么?"

但我发现了更多,例如:

  1. "好吧谷歌,检查我的脉搏."

android voice-recognition google-now google-fit wear-os

6
推荐指数
1
解决办法
193
查看次数

如何从可穿戴应用程序中检索崩溃报告?

由于Crashlytics不能在开箱即用的可穿戴应用程序上运行,我正在寻找一种拦截和报告运行时抛出的任何潜在异常的最佳方法.我想知道为什么他们没有被自动报告给Google Play开发者控制台?

谷歌已经宣布未来的Android Wear更新将内置Wi-Fi支持,但即便如此,并非所有设备都将配备足够的硬件.

在这种情况下,我最初的想法是创建一个子类Application并实现它Thread.UncaughtExceptionHandler.然后,每个例外都必须编组并发送到手机,使用MessageApi.WearableListenerService手机上的扩展将收到一条消息,解组异常并将其传递给Crashlytics.

但是,这提出了一些问题.可穿戴设备和手机之间的蓝牙连接存在中断风险,因此所有错误都应排队并存储在可穿戴设备的文件系统中.

对于简单的崩溃报告来说,这似乎有些过分.有更简单的方法吗?

android crash-reports crashlytics wear-os

6
推荐指数
1
解决办法
1360
查看次数

正则表达式:忽略组的顺序

我有一段文字:

randomtext 1150,25 USD随机文本

和一个简单的正则表达式来提取不同货币的金额:

(((\d+)(,?\s?|.)(\d{1,2}))\s?(PLN|EUR|USD|CHF|GBP))

这给了我这些团体:

  1. 1150,25美元
  2. 1150,25
  3. 1150
  4. ,
  5. 25
  6. 美元

但是,数字和货币可能会交换其头寸:

randomtext USD 1150,25随机文字

要么

randomtext USD1150,25 randomtext

在保持当前分组的同时,如何在不重复整个组(AB | BA)的情况下提高我的正则表达式以满足该条件?

java regex

6
推荐指数
1
解决办法
1059
查看次数

新Azure门户中缺少移动服务

我有两个正在运行的移动服务,这些服务是在manage.windowsazure.com上使用当前门户创建的.我目前正在portal.azure.com上测试新版本,我发现我的移动服务(现在可能被称为移动应用程序)以及他们的通知中心丢失了.其他服务,如SQL服务器,数据库和Web应用程序都在那里.

如何在新门户中管理我的移动服务?

azure azure-mobile-services

2
推荐指数
1
解决办法
214
查看次数