Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //recycleadaptor
- package com.repoai.myrecyclerview
- import android.os.AsyncTask
- import android.support.design.widget.Snackbar
- import android.support.v7.widget.CardView
- import android.support.v7.widget.RecyclerView
- import android.util.Log
- import android.view.LayoutInflater
- import android.view.MenuItem
- import android.view.View
- import android.view.ViewGroup
- import android.widget.ImageView
- import android.widget.TextView
- import kotlinx.android.synthetic.main.card_layout.view.*
- import org.json.JSONObject
- import java.io.BufferedReader
- import java.io.InputStream
- import java.io.InputStreamReader
- import java.net.HttpURLConnection
- import java.net.URL
- class RecyclerAdapter(val arrayList: ArrayList<String>) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>(){
- val CONNECTION_TIMEOUT_MILLISECONDS = 60 * 1000
- val paris = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/48.8587741,2.4871427"
- val jerosalem = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/31.7962994,35.2453995"
- val rome = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/41.909986,12.676083"
- val sidny = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/33.847927,151.2121682"
- val sanFran = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/37.7576793,-122.3675597"
- val rio = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/-22.9140693,-43.3058946"
- val london = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/51.528308,0.1785833"
- var hum=""
- var temp=""
- var i = 0
- var details:ArrayList<String> = ArrayList()
- //mock data
- // var myData: GetWheatherAsyncTask = GetWheatherAsyncTask()
- private val titles = arrayOf("sidny", "rome", "jerusalem", "rio", "san fransisco","london","paris")
- //var details= arrayOf("1","2","3","4","5","6","7" )
- private val images = intArrayOf(R.drawable.sydny,R.drawable.rome,R.drawable.jerasalem,R.drawable.rio,
- R.drawable.sanfran,R.drawable.london,R.drawable.paris)
- override fun getItemCount(): Int {
- return titles.size
- }
- //create only the template for the view holder
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
- val view = LayoutInflater.from(parent.context).inflate(R.layout.card_layout, parent,false)
- return ViewHolder(view)
- }
- //change the data of our view holder
- override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- holder.itemTitle.text = titles[position]
- holder.itemDetail.text = details[position]
- holder.itemImage.setImageResource(images[position])
- }
- inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
- var itemImage:ImageView
- var itemTitle:TextView
- var itemDetail:TextView
- //connection to our card_View layout
- init {
- itemImage = itemView.findViewById(R.id.item_image)
- itemTitle = itemView.findViewById(R.id.item_title)
- itemDetail = itemView.findViewById(R.id.item_detail)
- itemView.setOnClickListener{
- view:View ->
- var position:Int = adapterPosition
- Snackbar.make(view, "item click in position $position",
- Snackbar.LENGTH_LONG).setAction("Action",null).show()
- }
- }
- }
- }
- //mainactivity
- package com.repoai.myrecyclerview
- import android.graphics.Color
- import android.os.AsyncTask
- import android.os.Bundle
- import android.support.v7.app.AppCompatActivity
- import android.support.v7.widget.LinearLayoutManager
- import android.support.v7.widget.RecyclerView
- import android.util.Log
- import kotlinx.android.synthetic.main.activity_main.*
- import org.json.JSONObject
- import java.io.BufferedReader
- import java.io.InputStream
- import java.io.InputStreamReader
- import java.net.HttpURLConnection
- import java.net.URL
- class MainActivity : AppCompatActivity() {
- val CONNECTION_TIMEOUT_MILLISECONDS = 60 * 1000
- val paris = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/48.8587741,2.4871427"
- val jerosalem = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/31.7962994,35.2453995"
- val rome = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/41.909986,12.676083"
- val sidny = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/33.847927,151.2121682"
- val sanFran = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/37.7576793,-122.3675597"
- val rio = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/-22.9140693,-43.3058946"
- val london = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/51.528308,0.1785833"
- var hum=""
- var details:ArrayList<String> = ArrayList()
- private var layoutManger: RecyclerView.LayoutManager? = null
- private var adapter:RecyclerView.Adapter<RecyclerAdapter.ViewHolder>? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- var data = GetWheatherAsyncTask().execute(sidny)
- var data1 = GetWheatherAsyncTask().execute(sidny)
- var data2 = GetWheatherAsyncTask().execute(sidny)
- var data3 = GetWheatherAsyncTask().execute(sidny)
- var data4 = GetWheatherAsyncTask().execute(sidny)
- var data5 = GetWheatherAsyncTask().execute(sidny)
- var data6 = GetWheatherAsyncTask().execute(sidny)
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- //tool bar section
- setSupportActionBar(toolbar)
- collapsing_toolbar.title="My beloved students"
- collapsing_toolbar.setContentScrimColor(Color.GREEN)
- //using our recycler view
- layoutManger = LinearLayoutManager(this)
- recycler_view.layoutManager = layoutManger
- }
- inner class GetWheatherAsyncTask : AsyncTask<String, String, String>() {
- override fun doInBackground(vararg args: String?): String {
- lateinit var urlConnection: HttpURLConnection
- var inString = ""
- try {
- var url = URL(args[0])
- urlConnection = url.openConnection() as HttpURLConnection
- urlConnection.connectTimeout = CONNECTION_TIMEOUT_MILLISECONDS
- urlConnection.readTimeout = CONNECTION_TIMEOUT_MILLISECONDS
- //a function to handle our stream
- inString = streamToString(urlConnection.inputStream)
- } catch (e: Exception) {
- //todo handle exception
- } finally {
- urlConnection.disconnect()
- }
- return inString
- }
- fun streamToString(inputStream: InputStream): String {
- val bufferReader = BufferedReader(InputStreamReader(inputStream))
- lateinit var line: String
- var result = StringBuilder()
- try {
- do {
- line = bufferReader.readLine()
- if (line != null) {
- result.append(line)
- }
- } while (line != null)
- } catch (e: Exception) {
- //todo handle exception for line reader
- } finally {
- inputStream.close()
- }
- Log.e("txt", line)
- return result.toString()
- }
- override fun onPostExecute(result: String?) {
- var json = JSONObject(result)
- val cur = json.getJSONObject("currently")
- // hum = cur.getDouble("humidity").toString()
- var temp = cur.getDouble("temperature").toString()
- // cur.keys().forEach { keyStr->
- // var value = cur.get(keyStr)
- // sList.add("$keyStr: $value")
- // }
- // details.add("Humidity: $hum")
- details.add("Temperature $temp")
- if (details.count()==7){
- recycler_view.adapter = RecyclerAdapter(details)
- }
- }
- }}
Add Comment
Please, Sign In to add comment