Cómo no vas a saber añadir un parámetro a una función y a un constructor.
Esto es lo que tienes para cada botón:
Código:
dato = "j_01"
miTexto.text = (getString(R.string.Jornada_1))
requestJsonObject()
Dentro de requestJsonObject necesitas dato pero no lo tienes porque te sale en rojo, pues pásalo como parámetro, cambia la definición de requestJsonObject() por requestJsonObject(dato: String) y llámalo con requestJsonObject(dato) en los listener del botón.
Luego, en el adaptador tres cuartos de lo mismo, pero en vez de parámetro de una función en el constructor:
class AdapJor(internal var context: Context, internal var listJornadas: List<ModelJor>, val dato: String)
Con eso estaría resuelto el tema dato. Que, bueno, llamarlo dato es como no decir nada, todas las variables de un programa son datos
Usar nombres descriptivos ayuda.
Ahora, lo del código repetido 30 veces tenía que haberte empezado a oler mal al segundo copy paste, o al tercero como mucho jaja. El código es exactamente igual en todos los botones, cambia el dato, el identificador de String y el identificador del botón. Mi sugerencia es crear una data class con esos tres atributos y crear un array que tenga 30 elementos de esa clase, de modo que el primero pertenezca a la primera jornada (j_01, R.string.Jornada_1 y R.id.tv_01), el segundo a la segunda, etc.
Con eso puedes convertir tu copy-paste de 30 veces en un bucle que lo escribes una vez y se ejecuta 30 veces, una con cada conjunto de datos de la jornada. Tener 5 líneas de código en vez de 150 es mucho más manejable y menos propenso a errores.