Kotlin学習ノート1
6219 ワード
ここではKotlinの文法を体系的に説明していませんが、DemoをするときにKotlin言語を意図的に使用し、使い方を記録します.公式サイトのドキュメントを見て、お勧めの本を読むことができます.
Activity
たとえばBaseActivityを作成すると、 open:クラスが継承するためにopenを追加する場合、またはabstract を追加するキーワード継承の方式は: Activityのサブクラスである以上、onCreateメソッドを書き換えるときに自動的にコードを補完します. override:見なくてもわかる方法で覆われています funは定義方法 である.注意方法パラメータの表現方式はJavaと少し違い、まず変数名で、それからタイプを示す. 注意疑問符?Kotlinは空の安全で、ここでBundleが空であることを示して、初めてKotlinを独学して、理解するのはあまりよくなくて、指摘してください.
Button
Activityを作成したのは、もちろんいくつかのボタンを追加し、傍受します. val定義変数はfinalに相当し、その後は参照を変更することはできず、varは初期化後も他の参照 を指すことができる. findViewById(R.id.btn)as TextViewコントロールを見つけた後、asキーワードでTextViewタイプ を変換するリスニングを設定する方法はjavaと同じですが、OnClickListenerを渡すのではなく、直接カッコ{}もちろん標準的な使い方を見ることもできます.
各ButtonがリスニングをすべてOnClickListenerとして設定したくない場合は、ActivityにOnClickListenerを実装するには、継承されたクラスの後に追加し、OnClickListenerを書き込み、onClickメソッドから
注意深いあなたはすでに発見して、ここには多くの珍しい面白いものがあって、以下は一つ一つ説明します
ブランチの使用
Javaの使用条件はswitch(){}で使用されますが、Kotlinではwhenキーワードで使用されます
明らかにwhen()カッコ内が判断のタイプで、ここではviewのidで、それぞれがこのように判断します
別のActivityの起動
なぜこのように使うのか、私はまだよく分かりません.また、○○のコントロールの傍受方法で別のActivityを起動すると、ここではrecyclerViewの傍受を使用しています.
変数の宣言
ローカル変数を宣言する場合、valは通常使用されますが、グローバル変数を宣言する場合、varは通常使用され、宣言時に空に初期化されます.たとえば、
TextViewオブジェクトを宣言し、空に初期化し、初期化しないとエラーが報告され、Activityで正常に使用されることを示します.
TextViewの表示値を変更する場合はsetText()ではなく、
属性値を設定することでsetText()メソッドが呼び出されます
后でsetXXX方法はすべてこのように使うので、しかし上のはやはり间违いを报告して、tv_のためですtargetはTevtViewと定義されていますか?エラーメッセージ:
so正しい姿勢は
エンティティークラスの定義
Javaでは、属性を定義し、その属性を作成するgettetメソッドとsetterメソッドはKotlinでのみ必要です.
これによりgetterメソッドとsetterメソッドが自動的に生成され、通常はこのように使用する必要はありません.
メソッドを定義し、パラメータのデフォルト値を設定します.
例えばActivityでToastを定義する方法
Unitは戻りタイプであり、Unitテーブルは戻り値がvoidであることを示すものに相当し、Unitを省略することができる.
ここでlengthパラメータはToastというデフォルト値を指定する.LENGTH_LONG呼び出しはこうすべき
RecyclerViewの使用
Activityでは通常ArrayListタイプのグローバル変数を定義し、Adapterのパラメータとしてグローバル変数を宣言します.
ここはArrayList?を選択します.
次にAdapterを作成します.彼の構造方法は次のとおりです.
構築方法におけるlistItemsのタイプもArrayList?,Activityでは、可変のグローバル変数を定義するときに初期化が空になるため、ここではこれに対応してlistItemsオブジェクトを初期化する
ここで知らないの?のと!!いったいどんな違いがあるのか.深く研究する必要があります.この時、このように使うべきだと知っておく必要があります.最後にこのように使います.
Activity
たとえばBaseActivityを作成すると、
open class BaseActivity : AppCompatActivity() {
}
open class BaseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
Button
Activityを作成したのは、もちろんいくつかのボタンを追加し、傍受します.
val btn_scale = findViewById(R.id.btn) as TextView
btn_scale.setOnClickListener {
//do something
}
btn.setOnClickListener(View.OnClickListener {
//do something
})
各ButtonがリスニングをすべてOnClickListenerとして設定したくない場合は、ActivityにOnClickListenerを実装するには、継承されたクラスの後に追加し、OnClickListenerを書き込み、onClickメソッドから
class AnimationActivity : BaseActivity(), View.OnClickListener {
...
override fun onClick(v: View?) {
val intent: Intent
when(v?.id){
R.id.id_animation_activity_view_animation ->{
intent = Intent(this, ViewAnimationActivity::class.java)
startActivity(intent)
}
R.id.id_animation_activity_property_animation ->{
intent = Intent(this, PropertyAnimationActivity::class.java)
startActivity(intent)
}
}
}
}
注意深いあなたはすでに発見して、ここには多くの珍しい面白いものがあって、以下は一つ一つ説明します
ブランチの使用
Javaの使用条件はswitch(){}で使用されますが、Kotlinではwhenキーワードで使用されます
when(v?.id){
R.id.id_animation_activity_view_animation ->{
// do something
}
R.id.id_animation_activity_property_animation ->{
//do something
}
}
明らかにwhen()カッコ内が判断のタイプで、ここではviewのidで、それぞれがこのように判断します
R.id.id_animation_activity_view_animation ->{
//do something
}
別のActivityの起動
val intent: Intent
intent = Intent(this, XXXActivity::class.java)
startActivity(intent)
なぜこのように使うのか、私はまだよく分かりません.また、○○のコントロールの傍受方法で別のActivityを起動すると、ここではrecyclerViewの傍受を使用しています.
intent = Intent(this@MainActivity, XXXActivity::class.java)
startActivity(intent)
変数の宣言
ローカル変数を宣言する場合、valは通常使用されますが、グローバル変数を宣言する場合、varは通常使用され、宣言時に空に初期化されます.たとえば、
private var tv_target: TextView? = null
TextViewオブジェクトを宣言し、空に初期化し、初期化しないとエラーが報告され、Activityで正常に使用されることを示します.
tv_target = findViewById(R.id.id_view_animation_activity_tv_target) as TextView
TextViewの表示値を変更する場合はsetText()ではなく、
tv_target.setText("");
属性値を設定することでsetText()メソッドが呼び出されます
tv_target.text = "hello"
后でsetXXX方法はすべてこのように使うので、しかし上のはやはり间违いを报告して、tv_のためですtargetはTevtViewと定義されていますか?エラーメッセージ:
Smart cast to 'TextView' is impossible, because 'tv_target' is a mutable property that could have been changed by this time
so正しい姿勢は
tv_target?.text = "hello"
エンティティークラスの定義
Javaでは、属性を定義し、その属性を作成するgettetメソッドとsetterメソッドはKotlinでのみ必要です.
class ListItem(
var title: String,
var description: String
)
これによりgetterメソッドとsetterメソッドが自動的に生成され、通常はこのように使用する必要はありません.
var listItemA = ListItem("titleText", "descriptionText")
listItemA.title = "HI Title"
listItemA.description = "Hi Description"
メソッドを定義し、パラメータのデフォルト値を設定します.
例えばActivityでToastを定義する方法
private fun toast(message: String, length: Int=Toast.LENGTH_LONG):Unit{
Toast.makeText(this@MainActivity, message,length).show()
}
Unitは戻りタイプであり、Unitテーブルは戻り値がvoidであることを示すものに相当し、Unitを省略することができる.
private fun toast(message: String, length: Int=Toast.LENGTH_LONG){
Toast.makeText(this@MainActivity, message,length).show()
}
ここでlengthパラメータはToastというデフォルト値を指定する.LENGTH_LONG呼び出しはこうすべき
toast("HI Android")
//
toast("Hi Android",1000)
RecyclerViewの使用
Activityでは通常ArrayListタイプのグローバル変数を定義し、Adapterのパラメータとしてグローバル変数を宣言します.
private var listItems: ArrayList? = null
ここはArrayList?を選択します.
次にAdapterを作成します.彼の構造方法は次のとおりです.
class MyRecyclerViewAdapter(private val context: Context,
private val listItems: ArrayList?)
: RecyclerView.Adapter() {
}
構築方法におけるlistItemsのタイプもArrayList?,Activityでは、可変のグローバル変数を定義するときに初期化が空になるため、ここではこれに対応してlistItemsオブジェクトを初期化する
listItems = ArrayList()
listItems?.add(ListItem("chapter1", "Android Framework"))
listItems!!.add(ListItem("chapter2", "Android Developer tools"))
listItems!!.add(ListItem("chapter3", "Custom View"))
listItems!!.add(ListItem("chapter4", "listView Demo"))
listItems!!.add(ListItem("chapter5", "Scroll Analysis"))
listItems!!.add(ListItem("chapter6", "Draw"))
listItems!!.add(ListItem("chapter7", "Animation Demo"))
ここで知らないの?のと!!いったいどんな違いがあるのか.深く研究する必要があります.この時、このように使うべきだと知っておく必要があります.最後にこのように使います.
val recyclerView = findViewById(R.id.id_main_recycler_view) as RecyclerView
val recyclerViewAdapter = MyRecyclerViewAdapter(this,listItems)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = recyclerViewAdapter