小编a_s*_*ber的帖子

以特定格式传递查询日期参数

在我的 android 应用程序中,我使用 Retrofit 2

@GET("/operations")
    fun getOperationsList(
        @Query("types") typeList: List<@JvmSuppressWildcards OperationType>,
        @Query("status") statusList: List<@JvmSuppressWildcards OperationStatus>,
        @Query("from") from: Date, @Query("to") to: Date
    ): Call<List<Operation>>
Run Code Online (Sandbox Code Playgroud)

这里结果 http 请求:

08-06 15:40:17.672 D/OkHttp  ( 2436): --> GET http://my_ip:8081/operations?types=payment&types=payout&status=executed&from=Tue%20Aug%2006%2015%3A40%3A17%20GMT%2B03%3A00%202019&to=Tue%20Aug%2006%2015%3A40%3A17%20GMT%2B03%3A00%202019 http/1.1
Run Code Online (Sandbox Code Playgroud)

但我需要以from, to这种格式传递日期参数():

YYYY-MM-ddTHH:mm:ss.Z
Run Code Online (Sandbox Code Playgroud)

例子:

https://some_host/operations?types=transfer&types=payment&status=executed&from=2018-07-01T19%3A13%3A51.418Z&to=2019-08-05T11%3A04%3A22.397Z
Run Code Online (Sandbox Code Playgroud)

在 Retrofit 2 中有可能吗?

android datetime-format retrofit2

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

如果第一个参数为true,则必须在函数中传递第二个参数

我有自定义的Kotlin函数:

fun getActiveCartTest(isAsync: Boolean = false, vararg callback: Callback<Cart> ): TransportResponse? {
...
}
Run Code Online (Sandbox Code Playgroud)

它具有一个默认参数(isAsync)和一个可选vararg)回调参数。我可以像这样从Java调用此函数:

1.  TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest();
2.  TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest(false);
3.  TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest(true);
4.  TransportService.INSTANCE.getActiveCartTest(true, new DefaultRestClientCallback<Cart>() {
            @Override
            public void onTransportResponse(@NotNull TransportResponse transportResponse) {

            }
        });
Run Code Online (Sandbox Code Playgroud)

很好,可以。但是,当我使用此调用时:

TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest(true);
Run Code Online (Sandbox Code Playgroud)

我收到一个编译错误。

我的意思是。当客户端想要调用函数的异步调用时,getActiveCartTest必须使用两个参数:isAsync AND callback

如您在我的函数中所见,getActiveCartTest客户端可以省略第二个参数(callback)。不对

我需要第一个param isAsync = true,那么用户还必须 …

arguments variadic-functions kotlin

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

SQL:子句LIKE与变量的工作不正确

MS SQL Server:

第一个sql:

select id, scope from delivery 
where scope like '%bunkering%'
order by scope desc
Run Code Online (Sandbox Code Playgroud)

结果返回34行,在列范围内,我只得到文本加注.

尼斯.这是正确的.

现在我想使用变量,如下所示:

DECLARE @SCOPE varchar = '%bunkering%'
select id, scope from delivery 
where scope like @SCOPE 
order by scope desc
Run Code Online (Sandbox Code Playgroud)

但现在我得到了38排.而且现在不仅有文字加油行.还有文字" mecanisme port "

为什么?我只需要文本加油.我怎么能这样做?

sql sql-server

0
推荐指数
1
解决办法
46
查看次数

Java的.GregorianCalendar在几个月内的日期差异无法正常工作

java 6.0

假设今天是: 2018年8月8日

这里方法返回2个日期的差异,以月为单位.

    public static Integer getDiffMonths(Date dateFrom, Date dateTo) {
        Calendar cal1 = new GregorianCalendar();
        cal1.setTime(dateFrom);
        Calendar cal2 = new GregorianCalendar();
        cal2.setTime(dateTo);
        return differenceInMonths(cal1, cal2);
}

 private static Integer differenceInMonths(Calendar dateFrom, Calendar dateTo) {
        int month1 = dateFrom.get(Calendar.YEAR) * 12 + dateFrom.get(Calendar.MONTH);
        int month2 = dateTo.get(Calendar.YEAR) * 12 + dateTo.get(Calendar.MONTH);
        int diff = month2 - month1;
        return diff;
    }
Run Code Online (Sandbox Code Playgroud)

这里有4个测试用例的结果:

1.

currentDate = Aug 08 2018
DateTo =      Aug 13 2018
diffMonth = 0
Run Code Online (Sandbox Code Playgroud)

2.

currentDate = …
Run Code Online (Sandbox Code Playgroud)

java java-date

0
推荐指数
1
解决办法
71
查看次数

领域5.8.0:findAllSorted-编译错误

Android Studio 3.2。境界:4.1.0

在我的build.gradle中:

buildscript {  
    ext.REALM_VERSION = '4.1.0'

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'

        classpath "io.realm:realm-gradle-plugin:$REALM_VERSION"      
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的app / build.gradle中:

implementation 'io.realm:android-adapters:2.0.0'
Run Code Online (Sandbox Code Playgroud)

以下代码段:

RealmQuery<Merchant> realmQuery = realm.where(Merchant.class);
return realmQuery.findAllSorted(sortByFieldName, Sort.ASCENDING);
Run Code Online (Sandbox Code Playgroud)

并且此代码成功工作。真好

但是,当我将Realm升级到5.8.0时,出现编译错误:

Error:
error: cannot find symbol
                return realmQuery.findAllSorted(sortByFieldName, Sort.ASCENDING);
Run Code Online (Sandbox Code Playgroud)

android realm

0
推荐指数
1
解决办法
605
查看次数

com.android.support:design:28.0.0 - Version 28 is the last version of the legacy support library

In my android project in xml I try to use com.google.android.material.textfield.TextInputEditText

like this:

        <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/editTextEmail"
                style="@style/textTextViewStyle"
                android:layout_width="0dp"
                android:layout_height="@dimen/min_height"
                android:layout_margin="@dimen/default_margin"
                android:hint="@string/email"
                android:inputType="textEmailAddress"
                android:padding="@dimen/half_default_margin"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewAppName" />
Run Code Online (Sandbox Code Playgroud)

in gradle.properties

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

In app/build.gradle:

android {
    dataBinding {
        enabled = true
    }
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Run Code Online (Sandbox Code Playgroud)

but I get …

android material-design android-support-design material-components-android androidx

0
推荐指数
1
解决办法
943
查看次数

如何避免公共财产?

这是我的Kotlin代码:

class Test1 {
    var name: String? = null
    var isMarried: Boolean = false
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

   val test1 = Test1()
   test1.name = "Name1"
   test1.isMarried = true
   System.out.println("name = " + test1.name + ", isMarried = " + test1.isMarried)
Run Code Online (Sandbox Code Playgroud)

但是我认为这不是一个好的解决方案,因为in类中的Test1属性(默认情况下)具有公共访问权限。从而导致性能nameisMarried 对所有应用程序可见。这很糟糕。它破坏了封装。

因此,为了解决此问题,我使用了下一种方法:

class Test2 {
    private var name: String? = null
    private var isMarried: Boolean = false

    fun getName(): String? {
        return name
    }

    fun setName(name: String) {
        this.name = name
    }

    fun …
Run Code Online (Sandbox Code Playgroud)

kotlin

0
推荐指数
1
解决办法
30
查看次数

文本是否包含日期格式?

假设我有这样的文字:

how are you? ok, I'm fine and how are you 08-01-20. Nice.
Run Code Online (Sandbox Code Playgroud)

如何检查它是否包含特定格式的子字符串?在这种情况下,这是一种日期格式:dd-MM-yy

 how are you? ok, I'm fine and how are you 08-01-20. Nice.  
Run Code Online (Sandbox Code Playgroud)

这种情况必须返回08-01-20

但是这段文字:

 how are you? ok, I'm fine and how are you 18:01:21. Nice.
Run Code Online (Sandbox Code Playgroud)

必须返回null

所以我需要08-01-20在第一种情况下返回并在第二种情况下返回null 的方法

java string date kotlin

0
推荐指数
1
解决办法
142
查看次数

用经典的 for 循环替换映射 for-each ?

爪哇8

这里有一些片段:

String createSelector(Map.Entry<String, Map<String, String>> seriesMapEntry) {
   for (Map.Entry<String,String> column : seriesMapEntry.getValue().entrySet()) {
        String expr = column.getValue();
         // some code here
   }
}
Run Code Online (Sandbox Code Playgroud)

好的。做工很好啊

是否可以在没有循环的情况下迭代seriesMapEntryfor-each?例如,使用经典的 for 循环(按索引迭代)。

java

0
推荐指数
1
解决办法
148
查看次数

Android系统.Android 4.0+的字符串文本颜色的通用方法?

假设我想在句子中为部分文本(你做的话)着色.

所以我用这个:

<string name="congratulations">Hello, how <font color="#00FFFF">do you</font> do</string>
Run Code Online (Sandbox Code Playgroud)

但这不适用于Android 4.0.

所以为了解决这个问题我使用下一个

<string name="congratulations">Hello, how <font fgcolor="#FF00FFFF">do you</font> do</string>
Run Code Online (Sandbox Code Playgroud)

但这对Android 4.3无效.

是否适用于所有Android 4.0+版本和不同语言的通用方法?

我发现这不适用于设备:操作系统版本:4.4.2设备:HTC Desire 610.所以最后我使用这个解决方案:

<string name="expand"><![CDATA[<font color=#00FFFF>+</font> My contacts]]></string>. 
Run Code Online (Sandbox Code Playgroud)

当然你需要在java代码中使用这个:

Html.fromHtml(source);  
Run Code Online (Sandbox Code Playgroud)

所以现在它适用于所有Adnroid 4.0+和所有语言.

android

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

一行“if”操作

我有以下代码:

 private fun setCashPaymentContainer(isSelected: Boolean) {      
        if (isSelected) {
            dataBinding.cashPaymentCheckImageViewContainer.visibility = View.VISIBLE
        } else {
            dataBinding.cashPaymentCheckImageViewContainer.visibility = View.GONE
        }
    }
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想改进它并将它写成简化和可读的 if else 块。如果我能写一行 if else 语句会很好请建议。

kotlin

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