Как получить иконки из OpenWeatherMap на экран - PullRequest
0 голосов
/ 19 октября 2018

Итак, я использую OpenWeatherMap Api для создания приложения для обнаружения солнечных лучей, поэтому у меня сейчас проблема в том, что у меня есть все значки в моей папке для рисования, проблема в том, что я хочу отобразитьвсе значки прямо сейчас я настроил так: enter image description here

Я использую этот жестко закодированный значок в качестве заполнителя, но я хочу, чтобы все остальные значки отображались, моя проблемаКак мне это сделать, изображение из API дается в строковом формате, и я не знаю, как я мог бы получить их из папки Drawable enter image description here

Код

// Array Adapter 
class ForecastAdapter(val forecast: Forecast) : RecyclerView.Adapter<ForecastData>(){

    override fun getItemCount(): Int {
        return forecast.list.count()

    }

    override fun onCreateViewHolder(p0: ViewGroup, p1: Int): ForecastData {
        val layoutInflator = LayoutInflater.from(p0?.context)
        val cellForRow = layoutInflator.inflate(R.layout.weather_row, p0, false)
        return ForecastData(cellForRow)

    }

    override fun onBindViewHolder(p0: ForecastData, p1: Int) {
        val getWeather = forecast.list[p1]
        val clouds = getWeather.weather[0]
        val getDateTime = forecast.list[p1]
        val getIcon = forecast.list[p1]
//        val icon = getIcon.weather[0]
        p0.view.textView_text_clouds.text = clouds.main
        p0.view.textView_date_time.text = getDateTime.dt_txt
//        p0.view.imageView_icon = icon.icon

    }

}

class ForecastData(val view: View): RecyclerView.ViewHolder(view){


}
// MainActivity 
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        searchButton.setOnClickListener {
            getRequest()

        }

        view.layoutManager = LinearLayoutManager(this)

//        val drawableId: Int = getResources().getIdentifier("drawable", "drawable", getPackageName())

    }

    private fun getRequest() {
        val input = searchBar.getText().toString()

        val url = "http://api.openweathermap.org/data/2.5/forecast?zip=" + input + "&units=imperial&APPID=" + getString(R.string.OPEN_WEATHER_MAP_API_KEY)

        val request = okhttp3.Request.Builder().url(url).build()

        val client = OkHttpClient()
        client.newCall(request).enqueue(object: Callback {
            override fun onResponse(call: Call, response: okhttp3.Response) {
                val body = response?.body()?.string()
                println(body)

                val gson = GsonBuilder().create()

                val weather = gson.fromJson(body, Forecast::class.java)


                runOnUiThread {
                    view.adapter = ForecastAdapter(weather)


                }

               }

            override fun onFailure(call: Call, e: IOException) {
                println("Failed to execute")
            }

        })
    }
}

1 Ответ

0 голосов
/ 19 октября 2018

Использовать, когда

, когда ("forecast.list [p1]") {"icon01d.png" -> p0.view.imageView_icon.setDrawable (R.drawable.icon01d.png)

"icon02n.png" -> p0.view.imageView_icon.setDrawable (R.drawable.icon02n.png)

else -> // Значок вашего местозаполнителя для viewview

}

...