Guest User

Untitled

a guest
Dec 8th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 8.08 KB | None | 0 0
  1. //recycleadaptor
  2. package com.repoai.myrecyclerview
  3. import android.os.AsyncTask
  4. import android.support.design.widget.Snackbar
  5. import android.support.v7.widget.CardView
  6. import android.support.v7.widget.RecyclerView
  7. import android.util.Log
  8. import android.view.LayoutInflater
  9. import android.view.MenuItem
  10. import android.view.View
  11. import android.view.ViewGroup
  12. import android.widget.ImageView
  13. import android.widget.TextView
  14. import kotlinx.android.synthetic.main.card_layout.view.*
  15. import org.json.JSONObject
  16. import java.io.BufferedReader
  17. import java.io.InputStream
  18. import java.io.InputStreamReader
  19. import java.net.HttpURLConnection
  20. import java.net.URL
  21.  
  22. class RecyclerAdapter(val arrayList: ArrayList<String>) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>(){
  23.     val CONNECTION_TIMEOUT_MILLISECONDS = 60 * 1000
  24.     val paris = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/48.8587741,2.4871427"
  25.     val jerosalem = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/31.7962994,35.2453995"
  26.     val rome = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/41.909986,12.676083"
  27.     val sidny = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/33.847927,151.2121682"
  28.     val sanFran = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/37.7576793,-122.3675597"
  29.     val rio = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/-22.9140693,-43.3058946"
  30.     val london = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/51.528308,0.1785833"
  31.     var hum=""
  32.     var temp=""
  33.     var i = 0
  34.     var details:ArrayList<String> = ArrayList()
  35.  
  36.     //mock data
  37.    // var myData: GetWheatherAsyncTask = GetWheatherAsyncTask()
  38.     private val titles = arrayOf("sidny", "rome", "jerusalem", "rio", "san fransisco","london","paris")
  39.     //var details= arrayOf("1","2","3","4","5","6","7" )
  40.  
  41.     private val images = intArrayOf(R.drawable.sydny,R.drawable.rome,R.drawable.jerasalem,R.drawable.rio,
  42.         R.drawable.sanfran,R.drawable.london,R.drawable.paris)
  43.  
  44.     override fun getItemCount(): Int {
  45.         return titles.size
  46.     }
  47.  
  48.     //create only the template for the view holder
  49.     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
  50.  
  51.         val view = LayoutInflater.from(parent.context).inflate(R.layout.card_layout, parent,false)
  52.         return ViewHolder(view)
  53.     }
  54.  
  55.     //change the data of our view holder
  56.     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
  57.  
  58.  
  59.         holder.itemTitle.text = titles[position]
  60.         holder.itemDetail.text = details[position]
  61.         holder.itemImage.setImageResource(images[position])
  62.     }
  63.  
  64.     inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
  65.         var itemImage:ImageView
  66.         var itemTitle:TextView
  67.         var itemDetail:TextView
  68.         //connection to our card_View layout
  69.         init {
  70.             itemImage = itemView.findViewById(R.id.item_image)
  71.             itemTitle = itemView.findViewById(R.id.item_title)
  72.             itemDetail = itemView.findViewById(R.id.item_detail)
  73.  
  74.             itemView.setOnClickListener{
  75.                     view:View ->
  76.                 var position:Int = adapterPosition
  77.                 Snackbar.make(view, "item click in position $position",
  78.                     Snackbar.LENGTH_LONG).setAction("Action",null).show()
  79.             }
  80.         }
  81.     }
  82.  
  83. }
  84.  
  85.  
  86. //mainactivity
  87. package com.repoai.myrecyclerview
  88. import android.graphics.Color
  89. import android.os.AsyncTask
  90. import android.os.Bundle
  91. import android.support.v7.app.AppCompatActivity
  92. import android.support.v7.widget.LinearLayoutManager
  93. import android.support.v7.widget.RecyclerView
  94. import android.util.Log
  95. import kotlinx.android.synthetic.main.activity_main.*
  96. import org.json.JSONObject
  97. import java.io.BufferedReader
  98. import java.io.InputStream
  99. import java.io.InputStreamReader
  100. import java.net.HttpURLConnection
  101. import java.net.URL
  102.  
  103.  
  104. class MainActivity : AppCompatActivity() {
  105.     val CONNECTION_TIMEOUT_MILLISECONDS = 60 * 1000
  106.     val paris = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/48.8587741,2.4871427"
  107.     val jerosalem = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/31.7962994,35.2453995"
  108.     val rome = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/41.909986,12.676083"
  109.     val sidny = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/33.847927,151.2121682"
  110.     val sanFran = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/37.7576793,-122.3675597"
  111.     val rio = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/-22.9140693,-43.3058946"
  112.     val london = "https://api.darksky.net/forecast/0e3a4cef498bc2ad18a97e1817c79e87/51.528308,0.1785833"
  113.     var hum=""
  114.     var details:ArrayList<String> = ArrayList()
  115.  
  116.     private var layoutManger: RecyclerView.LayoutManager? = null
  117.     private var adapter:RecyclerView.Adapter<RecyclerAdapter.ViewHolder>? = null
  118.  
  119.     override fun onCreate(savedInstanceState: Bundle?) {
  120.         var data = GetWheatherAsyncTask().execute(sidny)
  121.         var data1 = GetWheatherAsyncTask().execute(sidny)
  122.         var data2 = GetWheatherAsyncTask().execute(sidny)
  123.         var data3 = GetWheatherAsyncTask().execute(sidny)
  124.         var data4 = GetWheatherAsyncTask().execute(sidny)
  125.         var data5 = GetWheatherAsyncTask().execute(sidny)
  126.         var data6 = GetWheatherAsyncTask().execute(sidny)
  127.  
  128.  
  129.  
  130.         super.onCreate(savedInstanceState)
  131.         setContentView(R.layout.activity_main)
  132.  
  133.         //tool bar section
  134.         setSupportActionBar(toolbar)
  135.         collapsing_toolbar.title="My beloved students"
  136.         collapsing_toolbar.setContentScrimColor(Color.GREEN)
  137.  
  138.         //using our recycler view
  139.         layoutManger = LinearLayoutManager(this)
  140.         recycler_view.layoutManager = layoutManger
  141.  
  142.  
  143.     }
  144.     inner class GetWheatherAsyncTask : AsyncTask<String, String, String>() {
  145.  
  146.         override fun doInBackground(vararg args: String?): String {
  147.             lateinit var urlConnection: HttpURLConnection
  148.             var inString = ""
  149.             try {
  150.                 var url = URL(args[0])
  151.  
  152.                 urlConnection = url.openConnection() as HttpURLConnection
  153.                 urlConnection.connectTimeout = CONNECTION_TIMEOUT_MILLISECONDS
  154.                 urlConnection.readTimeout = CONNECTION_TIMEOUT_MILLISECONDS
  155.  
  156.                 //a function to handle our stream
  157.                 inString = streamToString(urlConnection.inputStream)
  158.  
  159.             } catch (e: Exception) {
  160.                 //todo handle exception
  161.             } finally {
  162.                 urlConnection.disconnect()
  163.             }
  164.             return inString
  165.         }
  166.  
  167.  
  168.         fun streamToString(inputStream: InputStream): String {
  169.             val bufferReader = BufferedReader(InputStreamReader(inputStream))
  170.             lateinit var line: String
  171.             var result = StringBuilder()
  172.             try {
  173.                 do {
  174.                     line = bufferReader.readLine()
  175.                     if (line != null) {
  176.                         result.append(line)
  177.                     }
  178.                 } while (line != null)
  179.             } catch (e: Exception) {
  180.                 //todo handle exception for line reader
  181.             } finally {
  182.                 inputStream.close()
  183.             }
  184.             Log.e("txt", line)
  185.             return result.toString()
  186.         }
  187.  
  188.         override fun onPostExecute(result: String?) {
  189.             var json = JSONObject(result)
  190.             val cur = json.getJSONObject("currently")
  191.             // hum = cur.getDouble("humidity").toString()
  192.             var temp = cur.getDouble("temperature").toString()
  193.             //  cur.keys().forEach { keyStr->
  194.             //    var value = cur.get(keyStr)
  195.             //    sList.add("$keyStr: $value")
  196.             // }
  197.  
  198.            // details.add("Humidity: $hum")
  199.                  details.add("Temperature $temp")
  200.             if (details.count()==7){
  201.         recycler_view.adapter = RecyclerAdapter(details)
  202.  
  203.  
  204.         }
  205.  
  206.     }
  207.  
  208.  
  209. }}
Add Comment
Please, Sign In to add comment