背景
我正在将我的应用程序转换为MVP架构,并发现Dagger 2在需要时注入依赖项非常有用.我的应用程序需要与两个web apis(我自己和第三方api)进行通信.有时可能会向我自己的api和第三方api发出请求.我正在使用Retrofit与这些api进行通信并使用GSON进行序列化/反序列化.
我以前做过什么
我创建了两个Retrofit RestAdapter并使用Service Locator模式在需要时获取它们.旨在用于我自己的api的RestAdapter包括带有一些自定义TypeAdapter的GSONConverter,因为我不想在应用程序中对我的响应进行1:1 JSON反序列化.另一个RestAdapter用于第三方api,并使用另一个具有特定字段命名策略的GSONConverter.
问题
我正在尝试使用DI而不是Service Locator来获取我的RestAdapter(以及API接口).我的NetModule类设置如下
@Module
public class NetModule {
private static final String MY_API_URL = "my_api_url";
private static final String THIRD_PARTY_API_URL = "third_party_api_url";
@Provides
@Singleton
Cache provideOkHttpCache(Application application) {
int cacheSize = 10 * 1024 * 1024; // 10 MiB
return new Cache(application.getCacheDir(), cacheSize);
}
@Provides
@Singleton
OkHttpClient provideOkHttpClient(Cache cache) {
OkHttpClient client = new OkHttpClient();
client.setCache(cache);
return client;
}
@Provides
@Singleton
TypeAdapter<MyClass> provideMyAPITypeAdapter() {
return new TypeAdapter<MyClass>() {
// implementation ignored …Run Code Online (Sandbox Code Playgroud) 我正在从我的 Android 应用程序中的 Directions API 获取包括航路点在内的路线。它包含多个“腿”段,这些段有自己的距离和持续时间。有没有办法将所有距离和持续时间相加得到总值?
示例:从 Direction API 中剥离 json 段
legs": [
{
"distance": {
"text": "389 km",
"value": 389438
},
"duration": {
"text": "6 hours 31 mins",
"value": 23452
}
},
{
"distance": {
"text": "0.5 km",
"value": 487
},
"duration": {
"text": "2 mins",
"value": 102
}
}
]
Run Code Online (Sandbox Code Playgroud)
根据上面的响应,有没有一种方法可以计算并显示输出,如下所示:
总距离:389.5公里总时长:6小时33分钟
android google-maps driving-directions google-maps-android-api-2
我知道这个问题已经被问过很多次了,但我会尽量具体。
我是 WPF / MVVM 的初学者,并在我的项目中使用 Galasoft 的 MVVM Light Toolkit。
我有一个包含用户输入一些患者详细信息的表单的视图。当他们单击关闭(X)按钮时,我想检查他们是否输入了某些内容,如果输入了,则询问他们是否要在关闭之前使用(是、否和取消)选项进行保存。我做了一些研究,发现很多人都建议使用 EventToCommand 功能,如下所示,
XAML
<Window
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF45"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<cmd:EventToCommand Command="{Binding OnClosingCommand}"
PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
...
</Window>
Run Code Online (Sandbox Code Playgroud)
查看模型
public class MainViewModel : ViewModelBase
{
public RelayCommand<CancelEventArgs> OnClosingCommand { get; set; }
public MainViewModel()
{
this.OnClosingCommand =
new RelayCommand<CancelEventArgs>(this.OnClosingCommandExecuted);
}
private void OnClosingCommandExecuted(CancelEventArgs cancelEventArgs)
{
// logic to check if view model has updated since it is loaded
if (mustCancelClosing)
{
cancelEventArgs.Cancel = true;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试为密码验证创建一个javascript正则表达式.接受密码的规则是
* ^ !我在网上找到了一个例子并将其修改如下
(?=.*[0-9]{2,})(?=.*[a-z])(?=.*[A-Z]{2,}).{12,}
Run Code Online (Sandbox Code Playgroud)
但是,这仍然会忽略特殊字符要求,并且只有在大写字符和数字按后续顺序排列时才有效.这些是我用这个得到的结果
aMMericano11 - true
aMmeRican1o1 - false
Run Code Online (Sandbox Code Playgroud)
我希望第二个也被接受,当然还增加了特殊字符.
谁可以帮我这个事?
android ×2
c# ×1
dagger-2 ×1
google-maps ×1
javascript ×1
mvvm ×1
mvvm-light ×1
regex ×1
retrofit ×1
wpf ×1