Hämta alla kanaler och låten som spelas just nu i Kotlin?

143 views
Skip to first unread message

David Ruland

unread,
Nov 5, 2018, 12:21:29 PM11/5/18
to Sveriges Radio API forum
Hej, 
försöker hämta alla kanaler och låtar som spelas just nu och spara json datan till en recycler view. Men inget visas i min recycler view och tror att mitt anrop är fel.  Kan någon hjälpa mig?


interface ApiChannels {

   
@GET("https ://api.sr.se/api/v2/channels/")
   
fun getChannels() : Observable<ChannelResponse>
}


class Channel {
   
var id : Int=0
    var name : String? = null
    var ch : String? = null
    var image:String? =null



}

class ChannelResponse {
    lateinit var data : List<Channel>
}

class HomeActivity : AppCompatActivity() {
   
private lateinit var channelAdapter : ChannelsAdapter

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

       
val recyclerView = findViewById<RecyclerView>(R.id.recycler)
       
channelAdapter = ChannelsAdapter()
        recyclerView
.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL))
        recyclerView
.adapter = channelAdapter

        val retrofit : Retrofit = Retrofit.Builder()
               
.baseUrl("https://api.sr.se/api/v2/channels/")
               
.addConverterFactory(GsonConverterFactory.create())
               
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
               
.build()

       
val apiChannels = retrofit.create(ApiChannels::class.java)

        apiChannels
.getChannels()
               
.subscribeOn(Schedulers.io())
               
.unsubscribeOn(Schedulers.computation())
               
.observeOn(AndroidSchedulers.mainThread())
               
.subscribe({ channelAdapter.setChannels(it.data) },
                       
{
                            Toast.makeText(applicationContext, it.message, Toast.LENGTH_SHORT).show()
                       
})
   
}



   
inner class ChannelsAdapter : RecyclerView.Adapter<ChannelsAdapter.ChannelViewHolder>() {

       
private val channels: MutableList<Channel> = mutableListOf()

       
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChannelViewHolder {
           
return ChannelViewHolder(layoutInflater.inflate(R.layout.listchannels, parent, false))
       
}

       
override fun getItemCount(): Int {
           
return channels.size
        }

       
override fun onBindViewHolder(holder: ChannelViewHolder, position: Int) {
            holder
.bindModel(channels[position])
       
}

       
fun setChannels(data: List<Channel>) {
           
channels.addAll(data)
            notifyDataSetChanged
()
       
}

       
inner class ChannelViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
           
val idText : TextView = itemView.findViewById(R.id.channel)
           
val songText : TextView = itemView.findViewById(R.id.song)
           
val artistText : TextView = itemView.findViewById(R.id.artist)
           
val channelImage : ImageView = itemView.findViewById(R.id.imageView5)

           
fun bindModel(channel: Channel) {
               
idText.text = channel.id.toString()
               
songText.text = channel.name
                artistText.text = channel.ch
                Picasso.get().load(channel.image).into(channelImage)
           
}
       
}
   
}
}

David Ruland

unread,
Nov 5, 2018, 1:00:35 PM11/5/18
to Sveriges Radio API forum


Den måndag 5 november 2018 kl. 18:21:29 UTC+1 skrev David Ruland:
Har ändrat min Channel klass.


interface ApiChannels {

   
@GET("https ://api.sr.se/api/v2/channels/")
   
fun getChannels() : Observable<ChannelResponse>
}


 
class Channel {
    var image : String? = null
var imagetemplate : String?=null
var color : String?=null
var tagline :String?=null
var siteurl : String?=null
var id : Int = 0
var url : URL? = null
var statkey : String?=null
var scheduleurl : String?=null
var channeltype : String?=null
var name : String?=null
}


class ChannelResponse {
Reply all
Reply to author
Forward
0 new messages