From fddf235aaf67921c654757f22a63e1500f0b7bbd Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Sat, 5 Nov 2022 23:20:41 +0100 Subject: zapocet rad na prikazu jedne objave, dodata lista slika #16 --- .../brzodolokacije/Adapters/PostImageAdapter.kt | 34 +++++++++++++++ .../brzodolokacije/Adapters/ShowPostsAdapter.kt | 6 +++ .../brzodolokacije/Fragments/FragmentPost.kt | 50 ++++++++++++++++++++++ .../app/src/main/res/layout/fragment_post.xml | 19 ++++++++ .../app/src/main/res/layout/post_image.xml | 27 ++++++++++++ .../app/src/main/res/layout/post_preview.xml | 5 ++- 6 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentPost.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_post.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/post_image.xml diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt new file mode 100644 index 0000000..b2eaa30 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt @@ -0,0 +1,34 @@ +package com.example.brzodolokacije.Adapters + +import android.graphics.BitmapFactory +import android.media.Image +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Models.Post +import com.example.brzodolokacije.databinding.PostImageBinding +import com.example.brzodolokacije.databinding.PostPreviewBinding + +class PostImageAdapter(val items : MutableList) + : RecyclerView.Adapter(){ + //constructer has one argument - list of objects that need to be displayed + //it is bound to xml of single item + private lateinit var binding: PostImageBinding + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + binding= PostImageBinding.inflate(inflater,parent,false) + return ViewHolder(binding) + } + override fun onBindViewHolder(holder: ViewHolder, position: Int){ + //sets components of particular item + holder.bind(items[position]) + } + override fun getItemCount() = items.size + inner class ViewHolder(itemView : PostImageBinding) : RecyclerView.ViewHolder(itemView.root){ + fun bind(item : java.io.File){ + binding.apply { + locationImage.setImageBitmap(BitmapFactory.decodeStream(item.inputStream())) + } + } + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt index c8a0b77..56220d5 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt @@ -7,6 +7,7 @@ import com.example.brzodolokacije.Models.ListItemModel import com.example.brzodolokacije.Models.Post import com.example.brzodolokacije.databinding.ListItemBinding import com.example.brzodolokacije.databinding.PostPreviewBinding +import java.io.Console class ShowPostsAdapter (val items : MutableList) : RecyclerView.Adapter(){ @@ -21,6 +22,11 @@ class ShowPostsAdapter (val items : MutableList) override fun onBindViewHolder(holder: ViewHolder, position: Int){ //sets components of particular item holder.bind(items[position]) +/* holder.itemView.setOnClickListener { + fun listener(position: Int){ + binding.tvTitle.text="klik" + } + }*/ } override fun getItemCount() = items.size inner class ViewHolder(itemView : PostPreviewBinding) : RecyclerView.ViewHolder(itemView.root){ diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentPost.kt new file mode 100644 index 0000000..82835f2 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentPost.kt @@ -0,0 +1,50 @@ +package com.example.brzodolokacije.Fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.PostImageAdapter +import com.example.brzodolokacije.Adapters.ShowPostsAdapter +import com.example.brzodolokacije.Models.Post +import com.example.brzodolokacije.R +import com.example.brzodolokacije.databinding.FragmentPostBinding + + +class FragmentPost : Fragment() { + + private lateinit var binding: FragmentPostBinding + private var images : MutableList = mutableListOf() + private var layoutManagerVar: RecyclerView.LayoutManager? = null + private var adapterVar: RecyclerView.Adapter? = null + private var recyclerView: RecyclerView?=null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //load data for the list + loadData() + //instantiate adapter and linearLayout + adapterVar=PostImageAdapter(images) + layoutManagerVar= LinearLayoutManager(activity) + } + + private fun loadData() { + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val rootView = inflater?.inflate(R.layout.fragment_post, container, false) + recyclerView = rootView?.findViewById(R.id.rvMain) + // set recyclerView attributes + recyclerView?.setHasFixedSize(true) + recyclerView?.layoutManager = layoutManagerVar + recyclerView?.adapter = adapterVar + return rootView + } + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_post.xml new file mode 100644 index 0000000..0b37348 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_post.xml @@ -0,0 +1,19 @@ + + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_image.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_image.xml new file mode 100644 index 0000000..c2a999d --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_image.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml index ffdd5d7..7283931 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml @@ -9,11 +9,13 @@ android:clipToOutline="true" > + - \ No newline at end of file -- cgit v1.2.3 From 3d751f1026a059820c1830164875aa252109d4a8 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Sat, 5 Nov 2022 23:41:08 +0100 Subject: Dodato učitavanje iz galerije. Dodata provera permisija. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/AndroidManifest.xml | 7 +- .../brzodolokacije/Activities/ActivityAddPost.kt | 83 ++++++++++++++++++++++ .../app/src/main/res/layout/activity_add_post.xml | 39 ++++++++++ 3 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index 870fa98..00ee960 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -3,7 +3,10 @@ xmlns:tools="http://schemas.android.com/tools"> - + + + + + + var paths = mutableListOf() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_add_post) + + uploadFromGallery=findViewById(R.id.btnActivityAddPostUploadImages) as Button + takePhoto=findViewById(R.id.btnActivityAddPosTakeImage) as Button + image=findViewById(R.id.image) as ImageView + + //dodavanje iz galerije + uploadFromGallery.setOnClickListener{ + + //provera da li je odobrena upotreba galerije + if(ContextCompat.checkSelfPermission(this@ActivityAddPost, Manifest.permission.READ_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ + ActivityCompat.requestPermissions(this@ActivityAddPost, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),101) + } + + //otvaranje galerije + val intent= Intent(Intent.ACTION_PICK) + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) + intent.action = Intent.ACTION_GET_CONTENT + intent.type="image/*" + startActivityForResult(Intent.createChooser(intent,"Izaberi fotografije"),100) + } + + //fotografisanje + takePhoto.setOnClickListener { + //provera da li je odobrena upotreba kamere + if(ContextCompat.checkSelfPermission(this@ActivityAddPost, Manifest.permission.CAMERA)!=PackageManager.PERMISSION_GRANTED){ + ActivityCompat.requestPermissions(this@ActivityAddPost, arrayOf(Manifest.permission.CAMERA),200) + } + } + + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + //nakon otvaranja + if(requestCode==100 && resultCode== RESULT_OK){ + //samo jedna slika + //image.setImageURI(data?.data) + + //veci broj slika + if (data!!.getClipData() != null) { + var count = data!!.clipData!!.itemCount + + for (i in 0..count - 1) { + var _uri: Uri = data!!.clipData!!.getItemAt(i).uri + uploadedImages!!.add(_uri) + } + //jedna slika + } else if (data?.getData() != null) { + uploadedImages.add(data.data!!) + } + } + } + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml new file mode 100644 index 0000000..da38262 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml @@ -0,0 +1,39 @@ + + + + + +