Как объединить Recyclerview с нижним листом - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь совместить просмотрщик с нижним листом. Я хотел бы иметь нижний лист, который содержит много карточек, поскольку пользователь «прокручивает» нижний лист. Мне нужно иметь как activity_main, так и activity_bottom_sheet в BottomSheetActivity.kt в текущей конфигурации, но это, похоже, не работает. Как я могу объединить activity_main с activity_bottom_sheet, т. Е. Как совместить обзор переработчика с нижним листом?

BottomSheetActivity.kt

import kotlinx.android.synthetic.main.activity_bottom_sheet.*
import kotlinx.android.synthetic.main.activity_main.*

class BottomSheetActivity : AppCompatActivity() {

    private lateinit var standardBottomSheetBehavior: BottomSheetBehavior<View>
    private val startColor = Color.parseColor("#00FFFFFF")
    private val endColor = Color.parseColor("#FFFFFFFF")
    private val textColor = Color.parseColor("#FF000000")
    private var modalDismissWithAnimation = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_bottom_sheet)
        if (supportActionBar != null)
            supportActionBar?.hide()
        val modelList = readFromAsset()
        val adapter = CustomAdapter(modelList, this)
        rcv.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false) as RecyclerView.LayoutManager?
        rcv.adapter = adapter;

        adapter.setOnItemClickListener(object : CustomAdapter.ClickListener {
            override fun onClick(pos: Int, aView: View) {
                Toast.makeText(this@BottomSheetActivity, modelList.get(pos).name, Toast.LENGTH_SHORT).show()
            }
        })

        setupStandardBottomSheet()
    }

    private fun setupStandardBottomSheet() {
        standardBottomSheetBehavior = BottomSheetBehavior.from(standardBottomSheet)


        standardBottomSheetBehavior.saveFlags = BottomSheetBehavior.SAVE_ALL
    }

    private fun readFromAsset(): List<Model> {

        val modeList = mutableListOf<Model>()
        val bufferReader = application.assets.open("android_version.json").bufferedReader()
        val json_string = bufferReader.use {
            it.readText()
        }

        val jsonArray = JSONArray(json_string);
        for (i in 0..jsonArray.length() - 1) {
            val jsonObject: JSONObject = jsonArray.getJSONObject(i)
            val model = Model(jsonObject.getString("name"), jsonObject.getString("version"))
            modeList.add(model)
        }
        return modeList
    }
}

CustomAdapter.kt

class CustomAdapter(val modelList: List<Model>, val context: Context) :
    RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        (holder as ViewHolder).bind(modelList.get(position));
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        val layoutInflater = LayoutInflater.from(parent.context)
        return ViewHolder(layoutInflater.inflate(R.layout.row_item, parent, false))
    }


    override fun getItemCount(): Int {
        return modelList.size;
    }

    lateinit var mClickListener: ClickListener

    fun setOnItemClickListener(aClickListener: ClickListener) {
        mClickListener = aClickListener
    }

    interface ClickListener {
        fun onClick(pos: Int, aView: View)
    }

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {

        init {
            itemView.setOnClickListener(this)
        }

        override fun onClick(p0: View?) {
            mClickListener.onClick(adapterPosition, itemView)
        }

        fun bind(model: Model): Unit {
            itemView.txt.text = model.name
            itemView.sub_txt.text = model.version
            val id = context.resources.getIdentifier(model.name.toLowerCase(), "drawable", context.packageName)
            itemView.img.setBackgroundResource(id)
        }

    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:id="@+id/rcv"/>

activity_bottom_sheet

<?xml version="1.0" encoding="utf-8"?>

<androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <FrameLayout
            android:id="@+id/standardBottomSheet"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            style="?attr/bottomSheetStyle"
            app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">

        <View
                android:id="@+id/slideView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="16dp" />

        <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="75dp"
            android:layout_marginTop="10dp"
            android:clickable="true"
            android:focusable="true"
            android:foreground="?android:attr/selectableItemBackground"
            android:orientation="vertical"
            card_view:cardCornerRadius="30dp"
            card_view:cardElevation="5dp"
            card_view:cardUseCompatPadding="false"
            card_view:contentPadding="5dp">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="16dp">

                <TextView
                    android:id="@+id/txt"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="15dp"
                    android:text="Title"
                    android:textSize="20sp"
                    android:textStyle="bold"
                    android:layout_marginLeft="15dp" />

                <ImageView
                    android:id="@+id/img"
                    android:layout_width="30dp"
                    android:layout_height="match_parent"
                    android:layout_marginStart="25dp"
                    android:layout_toRightOf="@+id/txt"
                    android:contentDescription="@string/app_name" />

                <TextView
                    android:id="@+id/sub_txt"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginStart="25dp"
                    android:layout_toRightOf="@+id/img"
                    android:autoSizeMaxTextSize="8sp"
                    android:autoSizeMinTextSize="6sp"
                    android:autoSizeStepGranularity="2sp"
                    android:autoSizeTextType="uniform"
                    android:text="Title"

                    />

            </RelativeLayout>

        </androidx.cardview.widget.CardView>

    </FrameLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...