Localify is a small library which allows to load a content from files which are stored under assets and/or raw directory. It can be useful when you have to load some init data or during tests to load mock data.
dependencies {
compile 'com.github.polok.localify:localify:1.0.0'
}<dependency>
<groupId>com.github.polok.localify</groupId>
<artifactId>localify</artifactId>
<version>1.0.0</version>
</dependency>First you have to init a LocalifyClient (the basic version) where you have to set the AssetManager and/or the Resources
LocalifyClientlocalifyClient = newLocalifyClient.Builder()
.withAssetManager(getAssets()) //If you want to read from raw directory
.withResources(getResources()) //If you want to read from assets directory
.build();StringloadAssetsFile(StringfileName);
StringloadRawFile(@RawResintfileNameRawId);//Read from assets directoryStringdataAssets = localifyClient.localify().loadAssetsFile("test.text");
//Read from raw directoryStringdataRaw = localifyClient.localify().loadRawFile(R.raw.test);voidloadAssetsFile(StringfileName, LocalifyCallback<T> callback);
voidloadRawFile(@RawResintfileNameRawId, LocalifyCallback<T> callback);//Read from assets directorylocalifyClient.localify()
.async()
.loadAssetsFile("test.txt", newLocalifyCallback<String>() {
@OverridepublicvoidonSuccess(Stringdata) {
}
@OverridepublicvoidonError(Throwablethrowable) {
}
});
//Read from raw directorylocalifyClient.localify()
.async()
.loadRawFile(R.raw.test, newLocalifyCallback<String>() {
@OverridepublicvoidonSuccess(Stringdata) {
}
@OverridepublicvoidonError(Throwablethrowable) {
}
});Observable<String> loadAssetsFile(StringfileName);
Observable<String> loadRawFile(@RawResintfileNameRawId);localifyClient.localify()
.rx()
.loadAssetsFile("test.txt")
.subscribeOn(Schedulers.io())
.subscribe(newSubscriber<String>() {
@OverridepublicvoidonCompleted() {
}
@OverridepublicvoidonError(Throwablee) {
}
@OverridepublicvoidonNext(Strings) {
}
});
localifyClient.localify()
.rx()
.loadRawFile(R.raw.test)
.subscribeOn(Schedulers.io())
.subscribe(newSubscriber<String>() {
@OverridepublicvoidonCompleted() {
}
@OverridepublicvoidonError(Throwablee) {
}
@OverridepublicvoidonNext(Strings) {
}
});By default asynchronous callbacks run in Android main thread. If you want this can be changed by 'withExecutor(executor)' method invoked on LocalifyCalient's builder:
LocalifyClientlocalifyClient = newLocalifyClient.Builder()
.withExecutor(....)
...
.build();localifyClient.localify()
.rx()
.loadAssetsFile("test.json")
.subscribeOn(Schedulers.io())
.map(newFunc1<String, User>() {
@OverridepublicUsercall(Stringdata) {
Gsongson = newGsonBuilder().create();
returngson.fromJson(data, User.class);
}
}).subscribe(newSubscriber<User>() {
@OverridepublicvoidonCompleted() {
}
@OverridepublicvoidonError(Throwablee) {
}
@OverridepublicvoidonNext(Useruser) {
}
});Copyright 2015 Marcin Polak
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.