Android RecyclerView StartPoint в представлении - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю над настройкой пользовательского интерфейса с помощью recyclerview.

Ниже приведен пример пользовательского интерфейса, который я хотел бы реализовать.

enter image description here

Я хотел бы добавить пользовательский интерфейс вне диапазона на основе начальной точки представления рециркуляции, но поведение не соответствует желаемому.

Я хочу, чтобы текст в NowTime и PM 12 был сосредоточен вокруг StartPoint.

Но я не понимаю, как с этим справиться.

Поделиться примером кода. Спасибо за вашу помощь.

item_times4.xml

<?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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <TextView
        android:id="@+id/textview_now_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="11sp"
        android:textColor="#aaaaaa"
        android:text="NowTime"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/view_now_time_divider"/>

    <View
        android:id="@+id/view_now_time_divider"
        android:layout_width="1dp"
        android:layout_height="10dp"
        android:background="#cccccc"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@id/textview_now_time"/>

    <View
        android:id="@+id/view_divider"
        android:layout_width="0dp"
        android:layout_height="4dp"
        android:background="#0078ff"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="@id/view_now_time_divider"/>

    <TextView
        android:id="@+id/textview_time_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="PM 12"
        android:textSize="12sp"
        app:layout_constraintStart_toStartOf="@id/view_divider"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/view_divider"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt

package com.example.recyclerviewexample

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.GridLayoutManager
import kotlinx.android.synthetic.main.activity_main1.*


class MainActivity : AppCompatActivity() {

    private val times: ArrayList<String> = ArrayList()
//    private val times2: ArrayList<String> = ArrayList()

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

        addTimes()
        // addTimes2()

        val myLayoutManager = GridLayoutManager(this, 19)
        recyclerview_times.layoutManager = myLayoutManager
        recyclerview_times.adapter = TimeAdapter(times, this)
    }


/*
    fun addTimes2() {
        animals2.add("9")
        animals2.add("10")
        animals2.add("11")
        animals2.add("12")
        animals2.add("13")
        animals2.add("14")
        animals2.add("15")
        animals2.add("16")
        animals2.add("17")
        animals2.add("18")
    }
*/

    fun addTimes() {
        times.add("9")
        times.add("9:30")
        times.add("10")
        times.add("10:30")
        times.add("11")
        times.add("11:30")
        times.add("12")
        times.add("12:30")
        times.add("13")
        times.add("13:30")
        times.add("14")
        times.add("14:30")
        times.add("15")
        times.add("15:30")
        times.add("16")
        times.add("16:30")
        times.add("17")
        times.add("17:30")
        times.add("18")
    }
}

TimeAdapter.kt

package com.example.recyclerviewexample

import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView

import kotlinx.android.synthetic.main.item_times3.view.*


class TimeAdapter(private val items: ArrayList<String>, private val context: Context) :
    RecyclerView.Adapter<ViewHolder>() {

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

    // Inflates the item views
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        return ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_times4, parent, false))
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        if (minToVisibility(items[position])) {
            holder?.tvTimeName?.visibility = View.GONE
        } else {
            holder?.tvTimeName?.text = items.get(position)
        }

        if (position % 2 == 0) {
            holder?.divider?.setBackgroundColor(Color.parseColor("#e8e8e8"))
        }
    }

}

private fun minToVisibility(time: String): Boolean {
    return when (time.contains(":")) {
        true -> true
        else -> false
    }
}

class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    val divider = view.view_divider
    val tvTimeName = view.textview_time_name
}

ScreenShot

enter image description here

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