Android Jetpack

Room Advanced - 5 (Adapter)

----___<<<<< 2023. 2. 2. 08:14

 

class MainActivity : AppCompatActivity() {
private val viewModel : MainViewModel by viewModels()
lateinit var numberArrayList : ArrayList<NumberEntity>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Create
val createBtn = findViewById<Button>(R.id.create)
createBtn.setOnClickListener {
val ranNumber = (0..100).random().toString()
val userEntity = NumberEntity(0, ranNumber)
viewModel.create(userEntity)
}
// Read
val numberRV = findViewById<RecyclerView>(R.id.numberRV)
viewModel.read()
viewModel.numberEntityList.observe(this, Observer {
Log.d("Main", it.toString())
numberArrayList = it as ArrayList<NumberEntity>
val customAdapter = CustomAdapter(numberArrayList)
numberRV.adapter = customAdapter
})
numberRV.layoutManager = LinearLayoutManager(this)
}
}
view raw MainActivity.kt hosted with ❤ by GitHub
class CustomAdapter(private val dataSet: ArrayList<NumberEntity>) : RecyclerView.Adapter<CustomAdapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val idArea: TextView
val randomNum : TextView
init {
idArea = view.findViewById(R.id.id)
randomNum = view.findViewById(R.id.randomNum)
}
}
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(viewGroup.context).inflate(R.layout.number_item, viewGroup, false)
return ViewHolder(view)
}
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
viewHolder.idArea.text = dataSet[position].id.toString()
viewHolder.randomNum.text = dataSet[position].randomNumber
}
override fun getItemCount() = dataSet.size
}
class MainViewModel : ViewModel() {
private val repository = Repository()
lateinit var numberEntityList : LiveData<List<NumberEntity>>
fun create(userEntity: NumberEntity) = viewModelScope.launch(Dispatchers.IO){
repository.create(userEntity)
}
fun read() {
numberEntityList = repository.read().asLiveData()
}
fun update(){
}
fun delete(){
}
}

'Android Jetpack' 카테고리의 다른 글

Room 의 다양한 테크닉들 - 1 (Simple Ex)  (0) 2023.02.04
Room Advanced - 6 (Update / Delete)  (0) 2023.02.02
Room Advanced - 4 (Create / Read)  (0) 2023.02.02
Room Advanced - 3 (구조)  (0) 2023.02.02
Room Advanced - 2 (DB)  (0) 2023.02.02