Привязка Int-List к обзору recylcer (который уже находится в связанном внешнем представлении переработчика) - PullRequest
0 голосов
/ 03 июля 2019

Я из мира C # и делаю свои первые шаги в среде Kotlin / Android.

Я немного избалован привязкой MVVM в C # и хотел бы отображать данные в пользовательском интерфейсе каккак можно меньше кода.

Вот сокращенный код, который уже работает:

MainViewmodel

class MainViewModel: BaseViewModel() {
   var examples = MutableLiveData<List<ExampleData>>(emptyList())

   // some rest methods that loads the data
}

DataClass

data class ExampleData(var name: String, var date: String, var ids:List<Int>) 

Fragment

class MainFragment : Fragment {
   // viewmodel and binding vals

   override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
       binding = DataBindingUtil.inflate<FragmentMainBinding>(inflater, R.layout.fragment_main, container, false)
       binding.setVariable(BR.viewmodel, viewModel)
       binding.lifecycleOwner = viewLifecycleOwner

       viewModel.reloadExampleData()

       return binding.root
   }       

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)

        val exampleDataAdapter = GenericListAdapter<ExampleData>(BR.examples, R.layout.example_item)
        recycler_view_examples.layoutManager = LinearLayoutManager(this.context)
        recycler_view_examples.adapter = exampleDataAdapter 
    }
}

Макет фрагмента

<layout 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">

<data>
    <variable
            name="viewmodel"
            type="com.test.viewmodel.MainViewModel"/>
</data>
   <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".view.MainFragment">

    <TextView
            android:id="@+id/textview_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:text="Examples"/>

    <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="50dp"
            android:id="@+id/recycler_view_ziehungen"
            data="@{viewmodel.examples}"
            android:layout_margin="8dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textview_header"
    />

    </androidx.constraintlayout.widget.ConstraintLayout>

</layout>

Макет example_item

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

<layout xmlns:tools="http://schemas.android.com/tools">
<data>
    <variable
            name="exampleData"
            type="com.text.model.ExampleData">
    </variable>
</data>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
                                   android:layout_width="match_parent"
                                   android:layout_height="wrap_content"
                                   android:layout_marginEnd="8dp"
                                   android:layout_marginStart="8dp"
                                   android:layout_marginTop="8dp">

    <RelativeLayout android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="8dp">

        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:id="@+id/text_view_name"
                  android:text="@{exampleData.name}"
                  android:maxLines="1"
                  android:layout_alignParentStart="true"
                  />

        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:id="@+id/text_view_date"
                  android:text="@{exampleData.datum}"
                  android:maxLines="1"
                  android:layout_alignParentEnd="true"
                  />

    <!-- here is my problem -->
        <androidx.recyclerview.widget.RecyclerView android:id="@+id/list_view_ids"
                                                   android:layout_width="wrap_content"
                                                   android:layout_height="wrap_content"

                                                   android:layout_alignParentStart="true"
                                                   android:orientation="horizontal"
                                                   android:layout_below="@+id/text_view_tag">

        </androidx.recyclerview.widget.RecyclerView>



    </RelativeLayout>
   </androidx.cardview.widget.CardView>
 </layout>

Этот код показывает список со всеми записями списка примеров.

Теперь мой вопрос

Я пытаюсь показать int-List (ExampleData.ids) в каждом example_item.Но я не знаю, как связать этот внутренний список с представлением переработчика.

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