Diskusi Manasye Tjahja Nugroho
Selesai
Manasye Tjahja Nugroho
setahun yang lalu
data item dan sub item tidak muncul
mohon pentunjuk data item dan sub item tidak bisa muncul di recycle view nya sudah saya cari, bingung mau ganti yang mana
https://drive.google.com/file/d/1Q6VauuQ2IEjl-34yJAiFPlZxJoUcqSRR/view?usp=sharing
2 Jawaban
Muhammad Fakhry Burhanuddin
setahun yang lalu
Di file Maintask.kt hanya variabel iscomplete yang menggunakan var
, yang lain pakai val
Muhammad Fakhry Burhanuddin
setahun yang lalu
Mulai dari baris ke-21 baris berikut bisa dihapus atau dikomen saja
//if(task.mainTask?.isComplete!!){
// completeTask()
//}else{
// inCompleteTask()
//}
Muhammad Fakhry Burhanuddin
setahun yang lalu
Berikutnya mulai baris ke-27 seperti berikut:
if(task.mainTask?.date != null && task.mainTask.date.isNotEmpty()){
showDateTask()
itemView.tvDateTask.text = task.mainTask!!.date
}else{
hideDateTask()
}
Perhatikan tanda ? dan !!
Muhammad Fakhry Burhanuddin
setahun yang lalu
Potongan kode berikut subTaskAdapter.setData(task.subTask!!)
hilangkan tanda !!
menjadi subTaskAdapter.setData(task.subTask)
Muhammad Fakhry Burhanuddin
setahun yang lalu
untuk method setOnClickListener di btnDoneTask
ubah seperti berikut:
itemView.btnDoneTask.setOnClickListener {
if (task.mainTask?.isComplete!!) {
inCompleteTask()
task.mainTask.isComplete = false
} else {
completeTask()
task.mainTask.isComplete = true
}
}
Perhatikan tanda ? dan !!
Manasye Tjahja Nugroho
setahun yang lalu
sudah saya ganti iscomplete dengan var dan yang lain pakek valbaris ke 21 dan baris ke 27
Manasye Tjahja Nugroho
setahun yang lalu
tidak muncul isi task dan sub task nya hanya muncul listnya saja
Muhammad Fakhry Burhanuddin
setahun yang lalu
di MainActivity.kt tambahkan kode berikut: binding.btnNavMain.selectedItemId = R.id.actioN_home
Kode lengkap MainActivity.kt:
package com.mch.ktm.kerjaanku.main
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import com.mch.ktm.kerjaanku.R
import com.mch.ktm.kerjaanku.databinding.ActivityMainBinding
import com.mch.ktm.kerjaanku.view.home.HomeFragment
import com.mch.ktm.kerjaanku.view.taskComplete.TaskCompleteFragment
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setupBottomNavigation()
}
private fun setupBottomNavigation() {
binding.btnNavMain.setOnNavigationItemSelectedListener {
when (it.itemId) {
R.id.actioN_home -> {
openFragment(HomeFragment())
return@setOnNavigationItemSelectedListener true
}
R.id.action_task_complete -> {
openFragment(TaskCompleteFragment())
return@setOnNavigationItemSelectedListener true
}
}
return@setOnNavigationItemSelectedListener false
}
binding.btnNavMain.selectedItemId = R.id.actioN_home
}
private fun openFragment(fragment: Fragment) {
supportFragmentManager
.beginTransaction()
.replace(R.id.frameMain, fragment)
.addToBackStack(null)
.commit()
}
}
Muhammad Fakhry Burhanuddin
setahun yang lalu
Berikut perbaikan file Subtask.kt
@Parcelize
data class SubTask(
val id: Int? = null,
val idTask: Int? = null,
val title: String? = null,
var isComplete: Boolean = false
) : Parcelable
Muhammad Fakhry Burhanuddin
setahun yang lalu
Berikut perbaikan file SubTaskAdapter.kt
package com.mch.ktm.kerjaanku.adapter
import android.graphics.Paint
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.mch.ktm.kerjaanku.R
import com.mch.ktm.kerjaanku.model.SubTask
import kotlinx.android.synthetic.main.item_sub_task.view.*
import kotlinx.android.synthetic.main.item_task.view.*
class SubTaskAdapter : RecyclerView.Adapter<SubTaskAdapter>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { // keyword inner dihapus
fun bind(subTask: SubTask) {
itemView.tvSubTasks.text = subTask.title
itemView.btnDoneSubTask.setOnClickListener {
if (subTask.isComplete) {
inCompleteSubTask()
subTask.isComplete = false
// val result = dbSubTaskHelper.updateSubTask(subTask)
// if(result>0){
// inCompleteSubTask()
// }
} else {
completeSubTask()
subTask.isComplete = true
// val result = dbSubTaskHelper.updateSubTask(subTask)
//if(result>0){
//}
}
}
}
private fun completeSubTask() {
itemView.btnDoneSubTask.setImageResource(R.drawable.ic_complete_task_done_black_24)
itemView.tvSubTasks.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
}
private fun inCompleteSubTask() {
itemView.btnDoneTask.setImageResource(R.drawable.ic_done_task_24)
itemView.tvSubTasks.paintFlags = Paint.ANTI_ALIAS_FLAG
}
}
private lateinit var subTasks: List<SubTask>
/* private lateinit var listener: (View) -> Unit */
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_sub_task, parent, false))
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(subTasks[position])
}
override fun getItemCount(): Int = subTasks.size
fun setData(subTasks: List<SubTask>) {
this.subTasks = subTasks
notifyDataSetChanged()
}
}
class ViewHolder hapus keyword inner
, di method onCreateViewHolder tambah false
di method inflate()
Muhammad Fakhry Burhanuddin
setahun yang lalu
Di dalam folder res hapus folder layout-in. ini tidak dipakai. Bisa dihapus lewat explorer windows
Muhammad Fakhry Burhanuddin
setahun yang lalu
Berikut perbaikan code fragment_home.xml
Manasye Tjahja Nugroho
setahun yang lalu
Manasye Tjahja Nugroho
setahun yang lalu
di layar masih kelihatan gak muncul
Muhammad Fakhry Burhanuddin
setahun yang lalu
Iya, soalnya masih banyak salah di kodingannya.
Berikut perbaikan file ActivitySplash.kt
Muhammad Fakhry Burhanuddin
setahun yang lalu
activity_main.xml: https://pastebin.com/P4amqnw1
Muhammad Fakhry Burhanuddin
setahun yang lalu
fragment_home.xml: https://pastebin.com/dR4gY9i2
Muhammad Fakhry Burhanuddin
setahun yang lalu
item_task.xml: https://pastebin.com/n4bLwCCv
Muhammad Fakhry Burhanuddin
setahun yang lalu
item_sub_task.xml: https://pastebin.com/22453sxR
Muhammad Fakhry Burhanuddin
setahun yang lalu
di file model Task.kt property subTask ubah namanya menjadi subTasks. Cara ubahnya klik kanan nama variabelnya dan pilih refactor->rename
package com.mch.ktm.kerjaanku.model
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Task (
val mainTask: MainTask? = null,
val subTasks: List<SubTask>? = null
):Parcelable
Manasye Tjahja Nugroho
setahun yang lalu
sudah bisa muncul
Manasye Tjahja Nugroho
setahun yang lalu
tapi untuk list yang gak ada sub tasknya, tidak muncul
Manasye Tjahja Nugroho
setahun yang lalu
Muhammad Fakhry Burhanuddin
setahun yang lalu
Ya memang begitu, sesuai logiknya. Kalau subtask tidak ada, tidak akan dimunculkan. Function hideSubTasks()
akan dijalankan.
if (task.subTasks != null) {
showSubTasks()
val subTaskAdapter = SubTaskAdapter()
subTaskAdapter.setData(task.subTasks)
itemView.rvSubTask.adapter = subTaskAdapter
} else {
hideSubTasks()
}
Manasye Tjahja Nugroho
setahun yang lalu
terima kasih, tinggal tampilan aja
Muhammad Fakhry Burhanuddin
setahun yang lalu
Perbaikan layout xml sudah dilampirkan juga di atas. Dicek lagi.
Kalau sudah solve, silahkan klik "MARK AS DONE"
Muhammad Fakhry Burhanuddin
setahun yang lalu
harusnya sudah muncul kalau perbaikan di atas dilakukan
Manasye Tjahja Nugroho
setahun yang lalu
Manasye Tjahja Nugroho
setahun yang lalu
subtask nya kembali error, setelah saya edit subtaskadapter
Muhammad Fakhry Burhanuddin
setahun yang lalu
Perubahan apa yang dibuat? Errornya bagaimana? Log di Logcat bagaimana?
Muhammad Fakhry Burhanuddin
setahun yang lalu
baris 21-25 dihapus saja karena sudah ada di setOnClickListener
Manasye Tjahja Nugroho
setahun yang lalu
oke siap makasih done