inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

파이어베이스 리얼타임 데이터베이스(Realtime Database) 불러오기

파이어베이스 리얼타임 데이터베이스 불러오기 - 질문

1040

신영현

작성한 질문수 37

0

  1. 질문 : 파이어베이스 리얼타임 데이터베이스에 날짜와 메모가 입력이 잘되었는데 어플 창에는 날짜가 뜨지 않습니다.

    -adapter_list.notifyDataSetChanged()하기 전까지는 날짜가 잘 떳는데 그 다음부턴 날짜가 파이어베이스에만 입력되고 어플 창에는 뜨지 않습니다 ㅜㅜ

    왜이런걸까요?

     

    -파이어베이스 리얼타임 데이터베이스에 입력이 잘됨

    문제 화면: 어플 화면에 날짜가 안뜸

    -MainActivity.kt 코드입니다

     

    package com.ipari.diet_memo
    
    import android.app.DatePickerDialog
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.util.Log
    import android.view.LayoutInflater
    import android.widget.*
    import androidx.appcompat.app.AlertDialog
    import com.google.firebase.auth.ktx.auth
    import com.google.firebase.database.DataSnapshot
    import com.google.firebase.database.DatabaseError
    import com.google.firebase.database.ValueEventListener
    import com.google.firebase.database.ktx.database
    import com.google.firebase.ktx.Firebase
    import java.util.*
    
    class MainActivity : AppCompatActivity() {
    
        val dataModelList = mutableListOf<DataModel>()
    
        override fun onCreate(savedInstanceState: Bundle?) {
    
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val database = Firebase.database
            val myRef = database.getReference("myMemo")
    
            val listView = findViewById<ListView>(R.id.mainLV)
            val adapter_list = ListViewAdapter(dataModelList)
    
            listView.adapter= adapter_list
    
            Log.d("DataModel------", dataModelList.toString())
    
            myRef.child(Firebase.auth.currentUser!!.uid).addValueEventListener(object : ValueEventListener{
                override fun onDataChange(snapshot: DataSnapshot) {
                    dataModelList.clear()
    
                    for (dataModel in snapshot.children) {
                        Log.d("Data", dataModel.toString())
                        dataModelList.add(dataModel.getValue(DataModel::class.java)!!)
                    }
                    adapter_list.notifyDataSetChanged()
                    Log.d("DataModel", dataModelList.toString())
                }
    
                override fun onCancelled(error: DatabaseError) {
    
                }
    
            })
    
            val writeButton = findViewById<ImageView>(R.id.writeBtn)
            writeButton.setOnClickListener {
    
                val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null)
                val mBuilder = AlertDialog.Builder(this)
                    .setView(mDialogView)
                    .setTitle("운동 메모 다이얼로그")
    
                val mAlertDialog = mBuilder.show()
                val DateSelectBtn = mAlertDialog.findViewById<Button>(R.id.dataSelectBtn)
    
                var dateText=""
    
                DateSelectBtn?.setOnClickListener {
                    val today = GregorianCalendar()
                    val year : Int = today.get(Calendar.YEAR)
                    val month : Int = today.get(Calendar.MONTH)
                    val date : Int = today.get(Calendar.DATE)
    
                    val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener{
                        override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int
                        ) {
                            Log.d("MAIN", "${year}, ${month +1}, ${dayOfMonth}")
                            DateSelectBtn.setText("${year}, ${month +1}, ${dayOfMonth}")
    
                            dateText = "${year}, ${month +1}, ${dayOfMonth}"
                        }
                    }, year, month, date)
                    dlg.show()
    
                }
    
                val saveBtn = mAlertDialog.findViewById<Button>(R.id.saveBtn)
                saveBtn?.setOnClickListener {
    
                    val healthMemo = mAlertDialog.findViewById<EditText>(R.id.healthMemo)?.text.toString()
                    val database = Firebase.database
                    val myRef = database.getReference("myMemo").child(Firebase.auth.currentUser!!.uid)
    
                    val model = DataModel(dateText, healthMemo)
    
                    myRef
                        .push()
                        .setValue(model)
                    mAlertDialog.dismiss()
                }
    
            }
        }
    }

kotlin firebase android

답변 1

0

개복치개발자

adapter 쪽의 코드를 봐야할 것 같습니다.

0

tn320

저도 같은 증상인데, adapter 코드는 아래와 같습니다.

뭐가 문제일까요?

 

package com.sunny.diet_memo

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView

class ListViewAdapter(val List : MutableList<DataModel>) : BaseAdapter(){
override fun getCount(): Int {
return List.size

}

override fun getItem(position: Int): Any {
return List[position]

}

override fun getItemId(position: Int): Long {
return position.toLong()
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {

var convertView =convertView
if(convertView == null){
convertView = LayoutInflater.from(parent?.context).inflate(R.layout.listview_item, parent, false)

}
val date = convertView?.findViewById<TextView>(R.id. listViewDateArea)
val memo = convertView?.findViewById<TextView>(R.id. listViewMemoArea)

date!!.text = List[position].date
date!!.text = List[position].memo

return convertView!!

}
}

0

개복치개발자

안녕하세요 tn320님
전체 소스코드를 압축해서 구글 드라이브로 공유해주시면 살펴보겠습니다!

주사위앱 소개 및 레이아웃 설정 문제

0

81

2

안드로이드 에뮬레이터가 실행이 안 되요...ㅠ

0

135

2

30 강 소스 좀 올려 주십시요

0

95

2

onBackPressed 함수가 동영상 하고 다르게 동작합니다.

0

107

2

ListView 초기 실행 안됩니다.

0

109

2

코딩을 완료하고난후 앱 실행시 자동 종료

0

84

2

datavinding에서 오류가 납니다.

0

63

1

안드로이드 스튜디오 버전 차이로 초기 empyt activity 선택하면 안됩니다.

0

136

2

context의 구별에 대하여

0

84

2

"프롤로그에서 ..." 오류 관련해 직전 질문에 대한 추가 질문입니다.

0

80

2

"프롤로그에서 콘텐츠가 허용되지 않습니다." 오류

0

184

3

해결완료

1

201

2

databinding 설정후 run하면 에러(해결)

0

234

2

databinding 설정 이후 실행시 에러

0

293

4

안드로이드 입문하는 사람입니다.

0

76

1

Firebase uid

0

90

3

activity_main 화면 다름

0

126

2

강의화면과 다른데 맞게진행되는것인가요...????

0

115

2

파이어베이스 질문

0

84

2

ActivityMainBinding에 오류가 납니다

0

145

2

선생님 onBackPressed 작동이 안되는거 같습니다

0

128

2

>app>res>layout 이 존재하지 않습니다.

0

123

2

안드로이드 스튜디오 미어캣 버전 사용 한글 깨짐

0

780

2

안드로이드 스튜디오 오류 발생 시 대처 방법은 요?

0

306

2