나의 첫번째 목표는 외부 DB에 값을 쓰고, 읽어오기 까지였다.
이제. 그 꿈을 이뤘다.
그런데 왜 찝찝하지?
- 구조는, 두개의 입력창으로 데이터를 받고,
- 버튼을 통해 최신 리스트를 리스트 뷰로 받아온다.
언제나 그렇듯 메인 코드만.
딴 사람 코드 보고 커스텀 시키는건 1시간,
Firebase 연동오류 찾는거. 3시간.ㅠㅠ
취미로 하는 이짓이 지겨워질뻔.
class MainActivity : AppCompatActivity() {
var list : MutableList<Hero> = mutableListOf()
val ref = FirebaseDatabase.getInstance().getReference()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Input
button.setOnClickListener {
val name = editText.text.toString().trim()
val pn = editText2.text.toString().trim()
if (name.isEmpty()) {
editText.error = "Please insert name"
return@setOnClickListener
}
if (pn.isEmpty()) {
editText2.error = "Please insert name"
return@setOnClickListener
}
val idx = ref.push().key
val hero = Hero(idx.toString(), name, pn)
ref.child(idx.toString()).setValue(hero).addOnCompleteListener{
Toast.makeText(applicationContext, "complete", Toast.LENGTH_SHORT).show()
editText.text.clear()
editText2.text.clear()
listRefresh()
}
}
// Output
button2.setOnClickListener {
listRefresh()
}
}
inner class lstAdp : BaseAdapter() {
override fun getCount(): Int {
return list.size
}
override fun getItem(position: Int): Any? {
return null
}
override fun getItemId(position: Int): Long {
return 0
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? {
var view : View? = convertView
if(convertView == null) {
view = layoutInflater.inflate(R.layout.lstlayout, null)
}
var txt1 = view?.findViewById<TextView>(R.id.textView2)
var txt2 = view?.findViewById<TextView>(R.id.textView3)
txt1?.text = "${list[position].name} | ${list[position].pn}"
txt2?.text = "${list[position].idx}"
return view
}
}
fun listRefresh() {
list.removeAll { true }
var valuelistener = object :ValueEventListener {
override fun onCancelled(p0: DatabaseError) {}
override fun onDataChange(p0: DataSnapshot) {
if(p0.exists()) {
for(rt in p0.children) {
var post = rt.getValue(Hero::class.java)
list.add(post!!)
}
}
lstView.adapter = lstAdp()
}
}
ref.addValueEventListener(valuelistener)
}
}
'Dead Code > DEPRECATED-KOTLIN' 카테고리의 다른 글
[코틀린코드연습장] SQLite (0) | 2019.03.21 |
---|---|
[코틀린코드연습장] SnackBar (0) | 2019.03.19 |
[코틀린코드연습장] Fragment생성 (0) | 2019.03.07 |
[코틀린코드연습장] 커스텀리스트 (0) | 2019.02.20 |
[코틀린코드연습장] ListDialog (0) | 2019.01.30 |
[코틀린코드연습장] BroadCastReceiver (0) | 2019.01.24 |
[코틀린코드연습장] ActivityACTION (0) | 2019.01.22 |
[코틀린코드연습장] startActivityForResult(3) . object (0) | 2019.01.17 |
[코틀린코드연습장] startActivityForResult(2) (0) | 2019.01.17 |
[코틀린코드연습장] startActivityForResult(1) (0) | 2019.01.17 |