I'm trying to do Automatic image slider in fragment in kotlin. Any possible solutions?? I tried couple of other things also. But not a possible solution, I can do image slide inside the main activity but not to do the automatic sliding in fragments....
fragment_home.xml
Here is the XML File
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".HomeFragment">
<!-- TODO: Update blank fragment layout -->
<com.denzcoskun.imageslider.ImageSlider
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/imageSlider"
app:iss_auto_cycle="true"
app:iss_delay="0"
app:iss_placeholder="@color/grey_font"
app:iss_error_image="@color/grey_font"
app:iss_corner_radius="5"
app:iss_selected_dot="@drawable/default_selected_dot"
app:iss_unselected_dot="@drawable/default_unselected_dot"
app:iss_period="1000">
</com.denzcoskun.imageslider.ImageSlider>
</FrameLayout>
HomeFragment.kt
//This is kotlin file
package com.example.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.denzcoskun.imageslider.ImageSlider
import com.denzcoskun.imageslider.constants.ScaleTypes
import com.denzcoskun.imageslider.models.SlideModel
// 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"
/**
* A simple [Fragment] subclass.
* Use the [HomeFragment.newInstance] factory method to
* create an instance of this fragment.
*/
class HomeFragment : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
//Here it is showing error on FindViewById
val imageSlider = findViewById<ImageSlider>(R.id.imageSlider) // HERE IS THE ERROR
val imageList = ArrayList<SlideModel>()
imageList.add(SlideModel("https://www.flickr.com/photos/zillniazi/44334678732","Babusar"))
imageList.add(SlideModel("https://www.flickr.com/photos/zillniazi/44334678732","Babusar"))
imageList.add(SlideModel("https://www.flickr.com/photos/zillniazi/44334678732","Babusar"))
imageList.add(SlideModel("https://www.flickr.com/photos/zillniazi/44334678732","Babusar"))
imageList.add(SlideModel("https://www.flickr.com/photos/zillniazi/44334678732","Babusar"))
imageSlider.setImageList(imageList, ScaleTypes.FIT)
return inflater.inflate(R.layout.fragment_home, container, false)
}
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 HomeFragment.
*/
// TODO: Rename and change types and number of parameters
@JvmStatic
fun newInstance(param1: String, param2: String) =
HomeFragment().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)
}
}
}
}