Создание диалогового окна нижнего листа с помощью кнопки вместо представления списка - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь создать экземпляр и показать диалог нижнего листа с помощью кнопки вместо просмотра списка и щелчком по элементу просмотра списка. Я хотел бы иметь что-то вроде btnClickEvent.onSetonClickListener для прослушивания щелчка по кнопке, а затем для его создания и отображения диалога нижнего листа.

MyActivity.kt

package cn.vove7.bottomsheetdialog
import android.app.Dialog
import android.content.ComponentName
import android.content.Intent
import android.content.pm.ResolveInfo
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import cn.vove7.bottomdialog.BottomDialog
import cn.vove7.bottomdialog.extension.awesomeHeader
import cn.vove7.bottomsheetdialog.builder.ViewIntentBuilder
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val items = listOf(
            "Awesome Share"
        )
        btnClickEvent.adapter = object : BaseAdapter() {
            override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
                return if (convertView == null) TextView(this@MainActivity).apply {

                    setPadding(20, 30, 20, 30)
                    setText(items[position])

                    setOnClickListener {
                        onClick(position)
                    }
                } else convertView
            }

            override fun getItem(position: Int): Any = items[position]

            override fun getItemId(position: Int): Long = position.toLong()

            override fun getCount(): Int = items.size
        }
    }

    fun onClick(pos: Int) {

                BottomDialog.builder(this) {
                    awesomeHeader("Options")
                    val intentFilter = Intent(Intent.ACTION_SEND).apply {
                        type = "text/plain"
                        putExtra(Intent.EXTRA_TEXT, "Options")
                    }
                    content(ViewIntentBuilder(intentFilter) { dialog: Dialog, position: Int, item: ResolveInfo, isLongClick: Boolean ->
                        intentFilter.component = ComponentName(item.activityInfo.packageName,
                            item.activityInfo.name)
                        intentFilter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                        startActivity(intentFilter)
                    })
                }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="ExtraText">

    <Button
        android:id="@+id/btnClickEvent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me" />

</LinearLayout>
...