Я хотел бы сделать пользовательский диалог, который показывает список чисел от 1 до 9 в качестве пользовательского ListView. Другими словами, я хочу поместить пользовательский ListView в пользовательский диалог.
Это мой основной макет, который содержит кнопку для отображения диалога при нажатии
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btnShow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="293dp"
android:layout_marginEnd="149dp"
android:text="show"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Это мой макет ListView:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Это мой макет строки
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="48dp"
android:layout_marginTop="28dp"
android:text="TextView"
android:textColor="#050505"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:background="#B0C9C4C4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>
Это мой главный класс активности *
package com.omarahmed.customdialogfragment
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.widget.ListView
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var mAdapter:CustomerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myList = ArrayList<RowData>()
myList.add(RowData(1))
myList.add(RowData(2))
myList.add(RowData(3))
myList.add(RowData(4))
myList.add(RowData(5))
myList.add(RowData(6))
myList.add(RowData(7))
myList.add(RowData(8))
myList.add(RowData(9))
mAdapter = CustomerAdapter(this,myList)
btnShow.setOnClickListener {
val builder = AlertDialog.Builder(this)
val view = LayoutInflater.from(this).inflate(R.layout.list_view_layout,null,false)
val myListView = view.findViewById<ListView>(R.id.listView)
myListView.adapter = mAdapter
builder.setView(view)
val alertDialog = builder.create()
alertDialog.show()
}
}
}
Это мой класс адаптера
package com.omarahmed.customdialogfragment
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
class CustomerAdapter(private val context: Context,private val list:ArrayList<RowData>) : BaseAdapter() {
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val view = LayoutInflater.from(context).inflate(R.layout.row_layout,parent,false)
val textViewNum = view.findViewById<TextView>(R.id.textView)
val rowData = list[position]
textViewNum.text= rowData.numbers.toString()
return view
}
override fun getItem(position: Int): Any {
return list[position]
}
override fun getItemId(position: Int):Long {
return position.toLong()
}
override fun getCount(): Int {
return list.size
}
}
Это мой класс данных строки
package com.omarahmed.customdialogfragment
data class RowData( var numbers:Int)
Проблема в том, что диалоговое окно отображается без списка. Просто пустой диалог.