J'ai "problème" avec ceci:
où p précédente, et n comme suivant, les deux boutons appellent:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycleView"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#E9DA1616"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/vipBtn" />
3 Réponses :
Peut-être essayez peut-être recyclerview.invalidate () après avoir passé de nouvelles données p>
wow! Juste wow!
J'ai une certaine expérience dans iOS et c'est littéralement ma 10ème heure de développement Android, mais c'est si étrange. P>
Ma mise en page de la question est la mise en page de la contrainte: P>
<RelativeLayout 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"
android:background="#0A7463">
[...]
Avez-vous eu des contraintes sur le recyclageView dans votre contrainteLayouout? RL et CL ont de nombreuses différences: RL a Match_Parent et CL ont une contrainte de correspondance ("0DP")
Oui, tout autour des éléments, en utilisant la vue de design
Pour recharger les données de RecyclERView, vous pouvez utiliser ci-dessous des choses. Tout d'abord, ajoutez cette méthode dans votre classe d'adaptateur.
private fun fetchJson(date: String) {
val url = "https://xxx/$date.json"
println("URL: $url")
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
val responseData = response.body()?.string()
runOnUiThread {
var rows: List<Product> = emptyList()
try {
if (response.code() in 200..399) {
val gson = GsonBuilder().create()
rows = gson.fromJson(responseData,Array<Product>::class.java).toList()
recycleView.adapter.setData(rows)
}
} catch (e: JSONException) {
e.printStackTrace()
}
}
}
override fun onFailure(call: Call, e: IOException) {
println("Failed")
}
})
}
Une question de débogage. Avez-vous vérifié la date code> Le paramètre code> a des valeurs différentes après chaque appel? Est
recycléview.adapter code> le code de réaffectation jamais atteint?Oui, essayez également ceci
VAL DT = date () VAL URL = "https://example.com/$date.json?dt=${dt.time}" code> juste pour être sûr .. . Mais le problème resteAssurez-vous que votre Aarray et votre gson n'est pas vide
Merci@unzila mais oui, j'ai vérifié cette centaine de fois ... toujours pas recharger
@Miff tu vous le déboguer? Ce n'est pas vide ?
oui bien sûr, et je reçois des données comme si cela devrait être
Êtes-vous sûr que l'appel HTTP est correct? Passez-vous la nouvelle date à chaque fois que vous cliquez sur les boutons suivants / précédents? Ajouter des journaux à la ligne où vous obtenez les lignes (pour vérifier si la liste des lignes n'est pas vide) et créez un nouvel adaptateur.
@Angelina oui, je reçois les données du serveur, println (), débogage W / Points d'arrêt ... Chaque fois que j'appelle Fetchjson Fonction I Créer un adaptateur
Recycletview.adapter = ProduitsApprimer (cette @ DonnéesActivités, lignes) Code>Ce que je veux dire peut-être que vous obtenez les mêmes données que vous voyez les mêmes données :-) Vous ne pouvez pas avoir de problème avec rechargement car chaque fois que vous recevez des lignes, vous créez un nouvel adaptateur. Vous auriez besoin de
notifydatasetchanged () code> lorsque vous prenez référence à l'adaptateur créé, prenez des éléments de liste et appelez CLEAR (), puis addall () sur eux. Ensuite, vous auriez besoin de notifier le jeu de données modifié.Merci @angelina, je viens de poster la réponse :( a besoin toute la journée pour résoudre ce problème