在我的 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 中有可能吗?
我有自定义的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,那么用户还必须 …
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 "
为什么?我只需要文本加油.我怎么能这样做?
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) 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) 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
这是我的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属性(默认情况下)具有公共访问权限。从而导致性能name和isMarried 对所有应用程序可见。这很糟糕。它破坏了封装。
因此,为了解决此问题,我使用了下一种方法:
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) 假设我有这样的文字:
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 的方法。
爪哇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 循环(按索引迭代)。
假设我想在句子中为部分文本(你做的话)着色.
所以我用这个:
Run Code Online (Sandbox Code Playgroud)<string name="congratulations">Hello, how <font color="#00FFFF">do you</font> do</string>但这不适用于Android 4.0.
所以为了解决这个问题我使用下一个
Run Code Online (Sandbox Code Playgroud)<string name="congratulations">Hello, how <font fgcolor="#FF00FFFF">do you</font> do</string>但这对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+和所有语言.
我有以下代码:
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 语句会很好请建议。