Котлин: ArrayAdapter с JSONArray

как я могу отправить массив json через адаптер?

Мне нужно показать некоторые данные из моего json: (показать сначала «name», затем «sub1», который содержит data1.X.X и, наконец, data2.X.X). пока я показываю только «название» элемента.

[
  {
    "name": "name",
    "array": {
      "sub1": [
        [
          "data1.1.0",
          "data1.1.1",
          "1"
        ],
        [
          "data1.2.0",
          "data1.2.1",
          "1"
        ]
      ],
      "sub2": [
        [
          "data2.1.0",
          "data2.1.1",
          "1"
        ]
      ]
    }
  }
]

Это мой адаптер:

class ListAdapterScolaire (context: Context, resource: Int, list: ArrayList<String>, private val arguments: Bundle?, private val forScol : Boolean) : MatchableArrayAdapter<String>(context, resource, list) {

private val TAG = ListAdapterScolaire::class.java.simpleName


override fun onBind(item: String?, itemView: View?, position: Int) {
    super.onBind(item, itemView, position)
    if (itemView != null){
        val arret = itemView.findViewById<TextView>(R.id.arret)
        arret?.text = "name"
        val aller = itemView.findViewById<TextView>(R.id.aller)
        aller.text = "data1.1" + "data1.2"
        val retour= itemView.findViewById<TextView>(R.id.retour)
        retour.text = "data2.1" + "data2.2"
    }
}

Мой адаптер расширяет этот класс. Это позволяет мне добавлять несколько уровней кода для моего макета. Под "многоуровневым" я подразумеваю, что могу использовать, например, LinearLayout, где обычно есть только простой TextView.

См. Мой макет listView (это файл xml, который будет использоваться для отображения каждого моего содержимого json):

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_height = "wrap_content"
    android:layout_width = "match_parent"
    xmlns:tools = "http://schemas.android.com/tools"
    android:orientation = "vertical">

    <TextView
        android:id = "@+id/arret"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:textAppearance = "?android:attr/textAppearanceListItemSmall"
        android:gravity = "center_vertical"
        android:paddingStart = "?android:attr/listPreferredItemPaddingStart"
        android:paddingEnd = "?android:attr/listPreferredItemPaddingEnd"
        android:background = "?android:attr/activatedBackgroundIndicator"
        android:minHeight = "?android:attr/listPreferredItemHeightSmall"
        android:layout_margin = "0dp"
        tools:text = "Nom arret"

        />
    <LinearLayout
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:orientation = "vertical">
        <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:orientation = "horizontal"
            android:paddingStart = "15dp"
            android:paddingEnd = "0dp">
            <TextView
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:textAppearance = "?android:attr/textAppearanceListItemSmall"
                android:gravity = "center_vertical"
                android:paddingStart = "?android:attr/listPreferredItemPaddingStart"
                android:paddingEnd = "?android:attr/listPreferredItemPaddingEnd"
                android:background = "?android:attr/activatedBackgroundIndicator"
                android:minHeight = "?android:attr/listPreferredItemHeightSmall"
                android:layout_margin = "0dp"
                tools:text = "Aller"
                android:id = "@+id/aller"
                />

        </LinearLayout>
        <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:orientation = "horizontal"
            android:paddingStart = "15dp"
            android:paddingEnd = "0dp">
                <TextView
                    android:id = "@+id/retour"
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:textAppearance = "?android:attr/textAppearanceListItemSmall"
                    android:gravity = "center_vertical"
                    android:paddingStart = "?android:attr/listPreferredItemPaddingStart"
                    android:paddingEnd = "?android:attr/listPreferredItemPaddingEnd"
                    android:background = "?android:attr/activatedBackgroundIndicator"
                    android:minHeight = "?android:attr/listPreferredItemHeightSmall"
                    android:layout_margin = "0dp"
                    tools:text = "Retour"
                    />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

РЕДАКТИРОВАТЬ :

Pojos

    class myobject {

    var array: array? = null

    var name: String? = null
    }

И

class array {
    var dataFirst: Array<Array<String>>? = null

    var dataSecond: Array<Array<String>>? = null
}

ты можешь добавить pojo? у меня есть код для тебя, но я не знаю твоего pojo

Ashish 10.01.2019 14:24

Лучше сначала преобразовать данные JSON в POJO. Затем вы сможете передать своему адаптеру «настоящие» объекты, которые хотите отобразить.

Bruno 10.01.2019 14:27

Что такое POJO? Я видел, что это самый простой объект

Projet Sin 10.01.2019 14:30

Его файл класса данных для создания объекта массива

Ashish 10.01.2019 14:32

Это для того, чтобы сделать объект таким?

Projet Sin 10.01.2019 14:35

Ваш класс Pojo будет выглядеть так: 'class UserProfile (var username: String)'

Ashish 10.01.2019 14:37

См. Обновленный ответ. Что дальше

Projet Sin 10.01.2019 14:59
0
7
330
0

Другие вопросы по теме