#android #json #kotlin #resources
Вопрос:
Список JSON всегда содержит одно из двух имен изображений (одно.png или два.png). Пожалуйста, объясните, как сделать так, чтобы это изображение появилось в приложении (в проекте эти два изображения уже находятся в src main res mipmap-hdpi).
Файл Json выглядит следующим образом:
{"Api":[{"Info":"Random text","Img":"one.png","Desc":"Alarm","TimeStamp":1626010201}]}
проект для Котлина, я только начинаю его изучать.
На php что-то подобное я бы написал:
$onepng = sichomeresmipmap-hdione.png; // path in the project to 'one.png'
$twopng = sichomeresmipmap-hditwo.png; // path in the project to 'two.png'
$ImgOneTwo = (JSON IMG == one.png) ? $onepng : $twopng;```
In layout:
```<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:id="@ id/ImgOneTwo"
android:src="@mipmap/one">
</ImageView>```
Комментарии:
1. Ваш вопрос о разборе JSON или о том, как использовать просмотр изображений? Нам нужно знать, на чем конкретно вы застряли, чтобы иметь возможность ответить на этот вопрос, не просто цитируя полную документацию. Спасибо.
2. Вы также можете подумать о том, чтобы пометить свой вопрос
android
. Похоже, это действительно больше связано с Android, чем с Kotlin или JSON.3. В PHP что-то вроде этого я бы написал:
$onepng = sichomeresmipmap-hdione.png; // path in the project to 'one.png' $twopng = sichomeresmipmap-hditwo.png; // path in the project to 'two.png' $ImgOneTwo = (JSON IMG == one.png) ? $onepng : $twopng;
в макете: « <ImageView android:layout_width=»25dp» android:layout_height=»25dp» android:id=»@ id/ImgOneTwo» android:src=»@mipmap/one»> </ImageView>«
Ответ №1:
Вы можете показать соответствующее изображение после получения ответа от api с помощью операторов if-else. Предполагая, что вы используете модернизацию для получения JSONArray, вы можете сделать это следующим образом:
val retrofitBuilder = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(YourApiInterface::class.java)
val retrofitData = retrofitBuilder.getJSONArray()
retrofitData.enqueue(object : Callback<ApiResponse?> {
override fun onResponse(
call: Call<ApiResponse?>,
response: Response<ApiResponse?>
) {
if (response.body()!!.api[0].Img == "one.png") {
imageView.setImageResource(R.drawable.one)
} else {
imageView.setImageResource(R.drawable.two)
}
}
override fun onFailure(call: Call<ApiResponse?>, t: Throwable) {
Log.v("Ret fail", t.message.toString())
}
})