From 53dd3a9e2eee27a69c349b7f2e1c295f19fdb114 Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Sun, 30 Oct 2022 16:19:05 +0100 Subject: dodate osnove fragmenta za prikay liste objekta koji radi sa hardkodovanim objektima #11 --- .../brzodolokacije/Adapters/SampleAdapter.kt | 29 +++++++++ .../brzodolokacije/Fragments/FragmentHome.kt | 73 ++++++++++++---------- .../example/brzodolokacije/Models/ListItemModel.kt | 6 ++ .../app/src/main/res/layout/fragment_home.xml | 10 +-- .../app/src/main/res/layout/list_item.xml | 24 +++++++ 5 files changed, 104 insertions(+), 38 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt new file mode 100644 index 0000000..12f019f --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt @@ -0,0 +1,29 @@ +package com.example.brzodolokacije.Adapters + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Models.ListItemModel +import com.example.brzodolokacije.databinding.ListItemBinding + +class SampleAdapter (val items : MutableList) + : RecyclerView.Adapter(){ + private lateinit var binding: ListItemBinding + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + binding=ListItemBinding.inflate(inflater,parent,false) + return ViewHolder(binding) + } + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bind(items[position]) + } + override fun getItemCount() = items.size + inner class ViewHolder(itemView : ListItemBinding) : RecyclerView.ViewHolder(itemView.root){ + fun bind(item : ListItemModel){ + binding.apply { + tvId.text=item.id.toString() + tvName.text=item.name + } + } + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt index 397e1cf..b460fd4 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt @@ -1,16 +1,18 @@ package com.example.brzodolokacije.Fragments import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Button +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.SampleAdapter +import com.example.brzodolokacije.Models.ListItemModel import com.example.brzodolokacije.R - -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" +import com.example.brzodolokacije.databinding.FragmentHomeBinding /** * A simple [Fragment] subclass. @@ -18,43 +20,46 @@ private const val ARG_PARAM2 = "param2" * create an instance of this fragment. */ class FragmentHome : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null + + private lateinit var binding: FragmentHomeBinding + private var nameList : MutableList = mutableListOf() + private var layoutManagerVar: RecyclerView.LayoutManager? = null + private var adapterVar: RecyclerView.Adapter? = null + private var recyclerView:RecyclerView?=null + + override fun onViewCreated(itemView: View, savedInstanceState: Bundle?) { + super.onViewCreated(itemView, savedInstanceState) + Log.d("Main","blabla") + + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } + //load data for the list + loadData() + adapterVar=SampleAdapter(nameList) + layoutManagerVar=LinearLayoutManager(activity) } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_home, container, false) + val rootView = inflater?.inflate(R.layout.fragment_home, container, false) + recyclerView = rootView?.findViewById(R.id.rvMain) + // rest of my stuff + recyclerView?.setHasFixedSize(true) + recyclerView?.layoutManager = layoutManagerVar + recyclerView?.adapter = adapterVar + return rootView } - - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment FragmentHome. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - FragmentHome().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } - } + fun loadData(){ + nameList.add(ListItemModel(1,"Sample 1")) + nameList.add(ListItemModel(2,"Sample 2")) + nameList.add(ListItemModel(3,"Sample 3")) + nameList.add(ListItemModel(4,"Sample 4")) + nameList.add(ListItemModel(5,"Sample 5")) + nameList.add(ListItemModel(6,"Sample 6")) } -} \ No newline at end of file +} diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt new file mode 100644 index 0000000..48e519e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt @@ -0,0 +1,6 @@ +package com.example.brzodolokacije.Models + +data class ListItemModel ( + val id:Int , + val name: String + ) \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml index 2395f65..f735bec 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml @@ -1,14 +1,16 @@ - - + android:layout_width="match_parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent"/> \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml new file mode 100644 index 0000000..fe53ac5 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file -- cgit v1.2.3