Skip to content
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Commit 98c19b6

Browse files
committed
Added new examples
HttpUrlConnection and AsyncTask ListView with BaseAdapter and Data Object OkHttp and AsyncTask Gson deserializers with OkHttp and AsyncTask Anko simple ui Anko async api sample
1 parent 910b8e1 commit 98c19b6

File tree

165 files changed

+4296
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+4296
-0
lines changed
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Built application files
2+
*.apk
3+
*.ap_
4+
5+
# Files for the Dalvik VM
6+
*.dex
7+
8+
# Java class files
9+
*.class
10+
11+
# Generated files
12+
bin/
13+
gen/
14+
15+
# Gradle files
16+
.gradle/
17+
build/
18+
/*/build/
19+
20+
# Local configuration file (sdk path, etc)
21+
local.properties
22+
23+
# Proguard folder generated by Eclipse
24+
proguard/
25+
26+
# Log Files
27+
*.log
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id="MyApplication" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="java-gradle" name="Java-Gradle">
5+
<configuration>
6+
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
7+
<option name="BUILDABLE" value="false" />
8+
</configuration>
9+
</facet>
10+
</component>
11+
<component name="NewModuleRootManager" inherit-compiler-output="true">
12+
<exclude-output />
13+
<content url="file://$MODULE_DIR$">
14+
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
15+
</content>
16+
<orderEntry type="inheritedJdk" />
17+
<orderEntry type="sourceFolder" forTests="false" />
18+
</component>
19+
</module>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build
+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="MyApplication" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="android-gradle" name="Android-Gradle">
5+
<configuration>
6+
<option name="GRADLE_PROJECT_PATH" value=":app" />
7+
</configuration>
8+
</facet>
9+
<facet type="android" name="Android">
10+
<configuration>
11+
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
13+
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
14+
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
15+
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
16+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
17+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
18+
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
19+
<option name="ALLOW_USER_CONFIGURATION" value="false" />
20+
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
21+
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
22+
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
23+
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
24+
</configuration>
25+
</facet>
26+
</component>
27+
<component name="NewModuleRootManager" inherit-compiler-output="false">
28+
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
29+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
30+
<exclude-output />
31+
<content url="file://$MODULE_DIR$">
32+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
33+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
34+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
38+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
39+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
40+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
44+
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
45+
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
52+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
53+
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
54+
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
55+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
56+
<sourceFolder url="file://$MODULE_DIR$/src/main/kotlin" isTestSource="false" />
57+
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
65+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
66+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
67+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
68+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
69+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
70+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
71+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
72+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
73+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
74+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
75+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
76+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
77+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
78+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
80+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
83+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
86+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
87+
</content>
88+
<orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
89+
<orderEntry type="sourceFolder" forTests="false" />
90+
<orderEntry type="library" exported="" name="gson-2.3.1" level="project" />
91+
<orderEntry type="library" exported="" name="okio-1.3.0" level="project" />
92+
<orderEntry type="library" exported="" name="kotlin-runtime-0.11.91.2" level="project" />
93+
<orderEntry type="library" exported="" name="support-v4-22.1.0" level="project" />
94+
<orderEntry type="library" exported="" name="support-annotations-22.1.0" level="project" />
95+
<orderEntry type="library" exported="" name="okhttp-2.3.0" level="project" />
96+
<orderEntry type="library" exported="" name="anko-0.6-15" level="project" />
97+
<orderEntry type="library" exported="" name="appcompat-v7-22.1.0" level="project" />
98+
<orderEntry type="library" exported="" name="kotlin-stdlib-0.11.91.2" level="project" />
99+
</component>
100+
</module>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
apply plugin: 'com.android.application'
2+
apply plugin: 'kotlin-android'
3+
4+
android {
5+
compileSdkVersion 22
6+
buildToolsVersion "22.0.1"
7+
8+
defaultConfig {
9+
applicationId "com.irontec.kotlintest"
10+
minSdkVersion 16
11+
targetSdkVersion 22
12+
versionCode 1
13+
versionName "1.0"
14+
}
15+
buildTypes {
16+
release {
17+
minifyEnabled false
18+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19+
}
20+
}
21+
sourceSets {
22+
main.java.srcDirs += 'src/main/kotlin'
23+
}
24+
}
25+
26+
dependencies {
27+
compile fileTree(dir: 'libs', include: ['*.jar'])
28+
compile 'com.android.support:appcompat-v7:22.1.0'
29+
compile 'com.google.code.gson:gson:2.3.1'
30+
compile 'com.squareup.okhttp:okhttp:2.3.0'
31+
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
32+
compile "org.jetbrains.anko:anko:$anko_version"
33+
}
34+
buildscript {
35+
ext.kotlin_version = '0.11.91.2'
36+
ext.anko_version = '0.6-15'
37+
repositories {
38+
mavenCentral()
39+
}
40+
dependencies {
41+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
42+
}
43+
}
44+
repositories {
45+
mavenCentral()
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Add project specific ProGuard rules here.
2+
# By default, the flags in this file are appended to flags specified
3+
# in /Users/axier/Library/Android/sdk/tools/proguard/proguard-android.txt
4+
# You can edit the include path and order by changing the proguardFiles
5+
# directive in build.gradle.
6+
#
7+
# For more details, see
8+
# http://developer.android.com/guide/developing/tools/proguard.html
9+
10+
# Add any project specific keep options here:
11+
12+
# If your project uses WebView with JS, uncomment the following
13+
# and specify the fully qualified class name to the JavaScript interface
14+
# class:
15+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16+
# public *;
17+
#}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
package="com.irontec.kotlintest" >
4+
5+
<uses-permission android:name="android.permission.INTERNET"/>
6+
7+
<application
8+
android:allowBackup="true"
9+
android:icon="@mipmap/ic_launcher"
10+
android:label="@string/app_name"
11+
android:theme="@style/AppTheme" >
12+
<activity
13+
android:name=".MainActivity"
14+
android:label="@string/app_name" >
15+
<intent-filter>
16+
<action android:name="android.intent.action.MAIN" />
17+
18+
<category android:name="android.intent.category.LAUNCHER" />
19+
</intent-filter>
20+
</activity>
21+
</application>
22+
23+
</manifest>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.irontec.kotlintest
2+
3+
import android.app.Activity
4+
import android.os.AsyncTask
5+
import android.os.Bundle
6+
import android.support.v7.app.AppCompatActivity
7+
import android.util.Log
8+
import android.view.Menu
9+
import android.view.MenuItem
10+
import android.widget.TextView
11+
import com.google.gson.Gson
12+
import com.google.gson.GsonBuilder
13+
import com.irontec.kotlintest.deserializers.WeatherDeserializer
14+
import com.irontec.kotlintest.models.WeatherObject
15+
import com.irontec.kotlintest.networking.NetworkClient
16+
import org.json.JSONObject
17+
import java.io.BufferedInputStream
18+
import java.io.BufferedReader
19+
import java.io.InputStreamReader
20+
import java.net.HttpURLConnection
21+
import java.net.URL
22+
import org.jetbrains.anko.*
23+
24+
25+
public class MainActivity : AppCompatActivity() {
26+
27+
override fun onCreate(savedInstanceState: Bundle?) {
28+
super<AppCompatActivity>.onCreate(savedInstanceState)
29+
30+
verticalLayout {
31+
padding = dip(5)
32+
val mTextView = textView {
33+
textSize = 12f
34+
}.layoutParams(width = matchParent, height = dip(300))
35+
button("Retrieve Weather") {
36+
textSize = 14f
37+
onClick {
38+
// Declare a background asynchronous task, no need for an AsyncTask anymore
39+
async {
40+
// Heavy duty work made on the background
41+
val networkClient = NetworkClient()
42+
val stream = BufferedInputStream(
43+
networkClient.get("https://raw.githubusercontent.com/irontec/android-kotlin-samples/master/common-data/bilbao.json"))
44+
val bufferedReader = BufferedReader(InputStreamReader(stream));
45+
val stringBuilder = StringBuilder();
46+
bufferedReader.forEachLine { stringBuilder.append(it) }
47+
val gsonBuilder = GsonBuilder().serializeNulls();
48+
gsonBuilder.registerTypeAdapter(javaClass<WeatherObject>(), WeatherDeserializer());
49+
val gson = gsonBuilder.create();
50+
val weather = gson.fromJson(stringBuilder.toString(), javaClass<WeatherObject>()) as WeatherObject
51+
52+
uiThread {
53+
// Just set the TextView text on the UI-Thread
54+
mTextView.setText(weather.toString())
55+
}
56+
}
57+
}
58+
}.layoutParams(width = matchParent, height = wrapContent)
59+
}
60+
61+
}
62+
63+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
64+
getMenuInflater().inflate(R.menu.menu_main, menu)
65+
return true
66+
}
67+
68+
override fun onOptionsItemSelected(item: MenuItem): Boolean {
69+
val id = item.getItemId()
70+
if (id == R.id.action_settings) {
71+
return true
72+
}
73+
return super.onOptionsItemSelected(item)
74+
}
75+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.irontec.kotlintest.deserializers
2+
3+
import com.google.gson.JsonDeserializationContext
4+
import com.google.gson.JsonDeserializer
5+
import com.google.gson.JsonElement
6+
import com.google.gson.JsonObject
7+
import com.irontec.kotlintest.models.WeatherObject
8+
import com.irontec.kotlintest.models.WindObject
9+
import java.lang.reflect.Type
10+
11+
/**
12+
* Created by axier on 24/4/15.
13+
*/
14+
open class WeatherDeserializer : JsonDeserializer<WeatherObject> {
15+
16+
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): WeatherObject? {
17+
val jsonObj = json as JsonObject
18+
19+
val wheather = WeatherObject()
20+
val wind = WindObject()
21+
22+
val jsonWeatherArray = jsonObj.getAsJsonArray("weather").get(0)
23+
val jsonMainObj = jsonObj.getAsJsonObject("main")
24+
val jsonWindObj = jsonObj.getAsJsonObject("wind")
25+
26+
wheather.main = jsonWeatherArray.getAsJsonObject().get("main").getAsString()
27+
wheather.description = jsonWeatherArray.getAsJsonObject().get("description").getAsString()
28+
wheather.temp = jsonMainObj.get("temp").getAsFloat()
29+
wheather.temp_Max = jsonMainObj.get("temp_max").getAsFloat()
30+
wheather.temp_Min = jsonMainObj.get("temp_min").getAsFloat()
31+
wheather.humidity = jsonMainObj.get("humidity").getAsInt()
32+
wind.speed = jsonWindObj.get("speed").getAsFloat()
33+
wind.deg = jsonWindObj.get("deg").getAsFloat()
34+
wheather.wind = wind
35+
36+
return wheather
37+
38+
}
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.irontec.kotlintest.models
2+
3+
/**
4+
* Created by axier on 24/4/15.
5+
*/
6+
public class WeatherObject {
7+
8+
public var main: String = ""
9+
public var description: String = ""
10+
public var temp: Float = 0.0f
11+
public var temp_Max: Float = 0.0f
12+
public var temp_Min: Float = 0.0f
13+
public var humidity: Int = 0
14+
public var wind: WindObject? = null
15+
16+
init {
17+
println(this.toString())
18+
}
19+
20+
override fun toString() =
21+
"Main ${main}, description ${description}, temp ${temp}, temp_Max ${temp_Max}," +
22+
", temp_Min ${temp_Min}, humidity ${humidity}, wind ${wind.toString()}"
23+
24+
}

0 commit comments

Comments
 (0)