-
Notifications
You must be signed in to change notification settings - Fork 1
/
ListActivity.kt
84 lines (74 loc) · 2.46 KB
/
ListActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.taonce.myanko.anko
import android.content.Context
import android.graphics.Color
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.util.Log
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import org.jetbrains.anko.*
import org.jetbrains.anko.recyclerview.v7.recyclerView
import org.jetbrains.anko.support.v4.swipeRefreshLayout
class ListActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("aulton", "intent value is ${intent.getStringExtra("aulton")}")
ListUI().setContentView(this)
}
}
class ListUI : AnkoComponent<ListActivity> {
override fun createView(ui: AnkoContext<ListActivity>) = with(ui) {
swipeRefreshLayout {
setOnRefreshListener {
toast("refresh")
isRefreshing = false
}
recyclerView {
layoutManager = LinearLayoutManager(ui.ctx)
lparams(width = matchParent, height = matchParent)
adapter = MyAdapter(ui.ctx, mutableListOf("1",
"2", "3", "4"))
}
}
}
}
class MyAdapter(private val context: Context,
private val mData: MutableList<String>) : RecyclerView.Adapter<MyAdapter.MyHolder>() {
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): MyHolder {
// 根据anko生成itemView,并且给itemView的tag赋值,从而取得MyHolder
return AdapterUI().createView(AnkoContext.create(context, p0)).tag as MyHolder
}
override fun getItemCount(): Int {
return mData.size
}
override fun onBindViewHolder(holder: MyHolder, p1: Int) {
holder.tv_name.text = mData[p1]
}
class MyHolder(view: View, val tv_name: TextView) : RecyclerView.ViewHolder(view)
class AdapterUI : AnkoComponent<ViewGroup> {
override fun createView(ui: AnkoContext<ViewGroup>): View {
var tv_name: TextView? = null
val item_view = with(ui) {
relativeLayout {
lparams(width = matchParent, height = dip(50))
tv_name = textView {
textSize = 12f
textColor = Color.parseColor("#FF0000")
backgroundColor = Color.parseColor("#FFF0F5")
gravity = Gravity.CENTER
}.lparams(width = matchParent, height = dip(50)) {
// 设置外边距
topMargin = dip(10)
}
}
}
// 返回itemView,并且通过tag取得MyHolder
item_view.tag = MyHolder(item_view, tv_name = tv_name!!)
return item_view
}
}
}