小编Mar*_*ler的帖子

修改Android Paging Architecture库中的PagedList

我目前正在考虑将Paging Architecture库(2.1.0-beta01编写本文时的版本)整合到我的应用程序中.一个组件是允许用户从中删除单个项目的列表.此列表仅限网络,并且使用Room缓存localy没有意义.

PagedList是不可变的,不支持修改.我已经读过有一个列表的副本,该列表被修改并返回,因为新的列表是要走的路.文档说明了相同的内容:

如果您有更精细的更新信号,例如网络API发信号通知对列表中单个项目的更新,则建议将数据从网络加载到内存中.然后通过包装内存中快照的DataSource将该数据呈现给PagedList.每次内存中副本更改时,都会使先前的DataSource无效,并且可以创建包装快照新状态的新数据.

我目前有基本推荐的实现来显示一个简单的列表.我DataSource看起来像这样:

class MyDataSource<SomeItem> : PageKeyedDataSource<Int, SomeItem>() {

    override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, SomeItem>) {
        // Simple load from API and notification of `callback`.
    }

    override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<Int, SomeItem>) {
        // Simple load from API and notification of `callback`.
    }

    override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<Int, SomeItem>) {
        // Simple load from API and notification of `callback`.
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在文档中引用的内存缓存(没有Room并且没有使整个数据集无效)的具体实现如何?

android kotlin android-architecture-components android-paging

13
推荐指数
2
解决办法
3075
查看次数

调用需要 API 级别 26(当前最小值为 23):java.time.Instant#now

我正在实施Google 的 Directions API。我的应用程序支持minSdkVersion 23,java.time.Instant这里不支持。

是否有解决方案,或者我应该检查用户的版本并在支持该版本的情况下允许此功能?

    DirectionsResult directionsResult = DirectionsApi.newRequest(geoApiContext)
            .mode(TravelMode.DRIVING)
            .origin(new com.google.maps.model.LatLng(mapFragment.getUserCoords().latitude, mapFragment.getUserCoords().longitude))
            .destination(tabHandlerCommunication.destinationBarCoords)
            .departureTime(Instant.now()) // <-- error here
            .await();
Run Code Online (Sandbox Code Playgroud)

错误:

调用需要 API 级别 26(当前最小值为 23):java.time.Instant#now less... (Ctrl+F1) 检查信息:此检查扫描应用程序中的所有 Android API 调用并警告任何调用不适用于此应用程序针对的所有版本(根据清单中的最小 SDK 属性)。如果你真的想使用这个 API 并且不需要支持旧设备,只需在你的 build.gradle 或 AndroidManifest.xml 文件中设置 minSdkVersion 。如果您的代码有意访问较新的 API,并且您已确保(例如使用条件执行)此代码只会在受支持的平台上调用,那么您可以使用指定本地最小 SDK 的 @TargetApi 注释来注释您的类或方法申请,例如@TargetApi(11),以便此检查将 11 而不是清单文件的最低 SDK 作为所需的 API 级别。如果您有意在样式定义中设置 android: 属性,请确保将其放在 values-vNN 文件夹中,以避免在某些设备上遇到运行时冲突,其中制造商添加了自定义属性,而这些自定义属性的 id 与以后平台上的新属性发生冲突. 同样,您可以在 XML 文件中使用 tools:targetApi="11" 来指示元素只会在适当的上下文中膨胀。问题编号:NewApi 确保将其放在 values-vNN 文件夹中,以避免在某些设备上遇到运行时冲突,这些设备制造商添加了自定义属性,其 id 与更高平台上的新属性冲突。同样,您可以在 XML 文件中使用 tools:targetApi="11" 来指示元素只会在适当的上下文中膨胀。问题编号:NewApi …

java android google-directions-api

13
推荐指数
2
解决办法
7347
查看次数

Chromium webview似乎不适用于Android applyOverrideConfiguration

在我的更改后使用resConfig描述Android风格的强制语言环境我面临包含视频的webview的问题.问题仅出在API21 +上,并且在删除对applyOverrideConfiguration的调用时确实消失了.不太确定如何解决这个问题.

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
  at com.android.webview.chromium.WebViewContentsClientAdapter.getDefaultVideoPoster(WebViewContentsClientAdapter.java:1172)
  at org.chromium.android_webview.DefaultVideoPosterRequestHandler$1.run(DefaultVideoPosterRequestHandler.java:39)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:135)
  at android.app.ActivityThread.main(ActivityThread.java:5221)
  at java.lang.reflect.Method.invoke(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)

从我在grepcode上可以找到的是获取ic_media_video_poster图像的时候..我验证了这个图像真的在sdk中.http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.1_r1/com/android/webview/chromium/WebViewContentsClientAdapter.java#WebViewContentsClientAdapter.getDefaultVideoPoster%28% 29

public Bitmap More ...getDefaultVideoPoster() {
     TraceEvent.begin();
     Bitmap result = null;
     if (mWebChromeClient != null) {
         if (TRACE) Log.d(TAG, "getDefaultVideoPoster");
         result = mWebChromeClient.getDefaultVideoPoster();
     }
     if (result == null) {
         // The ic_media_video_poster icon is transparent so we need …
Run Code Online (Sandbox Code Playgroud)

android webview chromium

12
推荐指数
2
解决办法
3895
查看次数

找不到满足版本限制的'androidx.arch.core:core-common'版本

如果添加以下行,则在创建新的Android Studio项目(“空活动”类型)后:

    // Lifecycle/View Models
    def lifecycleVersion = '2.0.0'
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycleVersion"

    // Core testing
    def coreTestingVersion = '2.0.1'
    testImplementation "androidx.arch.core:core-testing:$coreTestingVersion"
    androidTestImplementation "androidx.arch.core:core-testing:$coreTestingVersion"
Run Code Online (Sandbox Code Playgroud)

对于应用程序的build.gradle文件,当您尝试运行connectedCheck项目任务时会看到错误。查看输出:

Zachs-MBP:CoreTestingVersionExample Zach$ ./gradlew connectedCheck

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:preDebugAndroidTestBuild'.
> Could not resolve all task dependencies for configuration ':app:debugAndroidTestRuntimeClasspath'.
   > Could not resolve androidx.arch.core:core-common:2.0.0.
     Required by:
         project :app
      > Cannot find a version of 'androidx.arch.core:core-common' that satisfies the …
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin androidx

11
推荐指数
1
解决办法
1705
查看次数

如何编写expect脚本来安装mariadb?

环境:centos7 + mariadb5.5.64。
让我在屏幕上显示安装信息何时运行mysql_secure_installation。

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): …
Run Code Online (Sandbox Code Playgroud)

automation centos expect mariadb tcltk

11
推荐指数
1
解决办法
764
查看次数

地理编码器 - getFromLocation() 已弃用

我收到一条消息,表明此函数(或其构造函数)已被弃用。该函数有一个新的构造函数,它接受附加参数'Geocoder.GeocodeListener listener',但该新构造函数需要 API 级别 33 及以上。对于较低的API级别我应该做什么,解决方案是什么?

在此输入图像描述

android geocoding kotlin deprecation-warning android-tiramisu

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

如何通过Drive API上传将Excel文件格式转换为G-Sheet?

我可以通过Drive API上传和转换CSV文件,没有任何问题,但是当发送XLS(使用PEAR XLS-Writer呈现)或XLSX(使用PHPExcel呈现)时,Drive API会抱怨:

"Error calling POST https://www.googleapis.com/upload/drive/v2/files?convert=true&uploadType=multipart&key=123: (500) Internal Error"
Run Code Online (Sandbox Code Playgroud)

MIME类型"application/vnd.ms-excel"显然比"application/vnd-excel"更好用

当我用内容类型"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"写出XLSX时,它完全相同......当加载预览时,当转换= true时,它会卡住.

使用MS Excel创建文件并手动上传时,它可以正常工作.

我可以插入/更新,下载/打开文件(一切正常) - 但我想转换它们.

执行完所有测试后,我猜测问题与创建的文件格式或MIME类型有关.

有关转换可能失败的任何提示......

"有没有人设法转换渲染的XLS/XLSX?"

问题基本上是:为了转换为gSheet,预期的文件格式+ MIME类型是什么?

我接受了赏金的任何答案,它提供了一种方法,可以将多维数组转换为具有多个页面的gSheet,以防万一通过Drive API(可能是首选方式).

这是一个Google云端硬盘API问题 - 这里没有单独的标记.

php xlsx phpexcel google-drive-api

10
推荐指数
1
解决办法
3583
查看次数

如何在Android Studio中的Gradle中获取JDK路径?

为了构建一些Android项目,必须设置环境变量JAVA_HOME。(请参阅此Stack Exchange问​​题和Flutter Bug报告。)

我正在从事的项目就是这种情况。我想更改Gradle文件,因此无需进行设置JAVA_HOME。

Gradle是否有任何方法可以获取封闭的Android Studio进程使用的JDK的路径(或者让该进程在无需用户干预的情况下传入JDK)?JAVA_HOME尚未设置时,它应该可以工作。

java android gradle

10
推荐指数
2
解决办法
300
查看次数

androidx getFragmentManager() 已被弃用

获得弃用警告androidx.fragment.app.Fragment:

警告:[deprecation] getFragmentManager()inFragment已被弃用。

该怎么办?

android android-fragments fragmentmanager deprecation-warning androidx

10
推荐指数
2
解决办法
5411
查看次数

Android studio Dolphin Render ui 问题

我将我的 android studio 更新为 Dolphin。我有一些用户界面问题: 1.无限循环尝试解决“?textAppearance”:渲染可能不准确。2.在当前主题中找不到“@android:attr/textAppearance”。

在此输入图像描述

android android-xml android-theme

10
推荐指数
1
解决办法
845
查看次数