Selamun Aleyküm
Abiler kotlin ile bir uygulama yapıyorum. Konuşmaların listelendiği bölümü yapmaya çalışıyorum fakat No adapter attached; skipping layout hatasını alıyorum ve ekrana hiç bir şey gelmiyor. İnternette baktım fakat kotlin ile ilgili kayda değer bir açıklama bulamadım. Java ile ilgili bir çok açıklama mevcut ama java bilmediğim için pek anlamadım.
Mesajlaşma bölümünde de aynı şekilde RecyclerView kullandım fakat orada bu şekilde bir hata almadım.
Kodlarım bu şekilde;
=====RecyclerView'in getirileceği fragment=====
class MesajlarFragment : Fragment() {
lateinit var mAuth: FirebaseAuth
lateinit var myFragmentView: View
var tumKonusmalarr: ArrayList<Konusmalar> = ArrayList<Konusmalar>()
lateinit var myRecyclerView: RecyclerView
lateinit var myLinearLayoutManager: LinearLayoutManager
lateinit var myAdapter: KonusmalarRecyclerAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
myFragmentView= inflater.inflate(R.layout.fragment_mesajlar, container, false)
return myFragmentView
tumKonusmalariGetir()
}
private fun setupKonusmalarRecylerView() {
myRecyclerView= myFragmentView.recyclerKonusmalar
myLinearLayoutManager= LinearLayoutManager(activity,LinearLayoutManager.VERTICAL,false)
myAdapter= KonusmalarRecyclerAdapter(tumKonusmalarr,this!!.activity!!)
myRecyclerView.layoutManager= myLinearLayoutManager
myRecyclerView.adapter= myAdapter
}
private fun tumKonusmalariGetir() {
var mRef= FirebaseDatabase.getInstance().reference
var mUser= FirebaseAuth.getInstance().currentUser
mRef.child("konusmalar").child(mUser!!.uid).addValueEventListener(object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.getValue() != null){
for (konusma in snapshot.children){
var okunanKonusma= konusma.getValue(Konusmalar::class.java)
okunanKonusma!!.user_id=konusma.key
tumKonusmalarr.add(okunanKonusma!!)
}
setupKonusmalarRecylerView()
}
}
override fun onCancelled(error: DatabaseError) {
}
})
}
}====Adapter====
class KonusmalarRecyclerAdapter(var tumKonusmalar:ArrayList<Konusmalar>, var myContext: Context):RecyclerView.Adapter<KonusmalarRecyclerAdapter.MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var myView=LayoutInflater.from(myContext).inflate(R.layout.tek_satir_konusma_item,parent,false)
return MyViewHolder(myView)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.setData(tumKonusmalar.get(position))
}
override fun getItemCount(): Int {
return tumKonusmalar.size
}
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var tumLayout = itemView as ConstraintLayout
var ensonAtilanMesaj= tumLayout.tvSonMesajMessenger
var mesajZaman= tumLayout.tvMesajZamanMessenger
var sohbetEdilenUserName= tumLayout.tvUserNameMessenger
fun setData(oankiKonusma: Konusmalar){
ensonAtilanMesaj.text=oankiKonusma.son_mesaj.toString()
mesajZaman.text=TimeAgo.getTimeAgo(oankiKonusma.time!!.toLong())
sohbetEdilenKullaniciBilgileriniGetir(oankiKonusma.user_id.toString())
}
private fun sohbetEdilenKullaniciBilgileriniGetir(userID: String) {
FirebaseDatabase.getInstance().getReference().child("users").child(userID).addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.getValue() != null){
for (ds in snapshot!!.children){
var bulunanKullanici= ds.getValue(Users::class.java)
sohbetEdilenUserName.text=snapshot.child("user_name").getValue().toString()
}
}
}
override fun onCancelled(error: DatabaseError) {
}
})
}
}
}Bugün sabahladım ama bir türlü çözüme ulaşamadım. Açıkçası kotlin'de yeniyim, internette yapılmış olan açıklamalardan da pek bir şey anlayabildiğim söylenemez. Acaba yardımcı olabilecek yada kodlar içinde hatayı gören yardımcı olabilir mi?
Şimdiden herkese teşekkür ederim.