Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

Error :- lateinit property itemsList (ArrayList) has not been initialized, HomeFragment, Kotlin

$
0
0

I am trying to create a story Book app with Kotlin but I am beginner and learning programing. and I try to create this app with local Json file (loadJsonFromAssets) with glide, in home fragment, but I got this error "lateinit property itemsList has not been initialized", I don't know how to fix it, please help me to fix it.

Error :- lateinit property itemsList has not been initialized

Home Fragment Code

class HomeFragment : Fragment() {    private lateinit var bookAdapter: BookAdapter    private lateinit var recyclerView: RecyclerView    private lateinit var itemsList: ArrayList<BooksData>    override fun onCreateView(        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?    ): View {        val view = inflater.inflate(R.layout.fragment_home, container, false)        // Initialize the RecyclerView        recyclerView = view.findViewById(R.id.bookRecyclerView)        recyclerView.layoutManager = GridLayoutManager(requireContext(), 2)        bookAdapter = BookAdapter(this@HomeFragment, itemsList)        recyclerView.adapter = bookAdapter        recyclerView.setHasFixedSize(true)        itemsList = ArrayList<BooksData>()        loadData()        return view    }    private fun loadData() {        val jsonString = loadJson("contents.json")        val items = parseJson(jsonString)        bookAdapter.setData(items)    }    private fun loadJson(contents: String): String {        val inputStream = requireContext().assets.open(contents)        val size = inputStream.available()        val buffer = ByteArray(size)        inputStream.read(buffer)        inputStream.close()        return String(buffer)    }    private fun parseJson(jsonString: String): ArrayList<BooksData> {        val jsonArray = JSONArray(jsonString)        val items = ArrayList<BooksData>()        for (i in 0 until jsonArray.length()) {            val jsonObject = jsonArray.getJSONObject(i)            val imageUrl = jsonObject.getString("imageUrl")            val bookName = jsonObject.getString("bookName")            items.add(BooksData(imageUrl, bookName))        }; return items    }}

data class

data class BooksData(val bookName:String, val imageUrl:String){}

Adapter class

class BookAdapter(var context: HomeFragment, private var dataList: ArrayList<BooksData>) :    RecyclerView.Adapter<BookAdapter.BookViewHolder>() {    inner class BookViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {        var bookNameTextView: TextView = itemView.findViewById(R.id.bookName)        var bookImageView: ImageView = itemView.findViewById(R.id.imageUrl)    }    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BookViewHolder {        val view =            LayoutInflater.from(parent.context).inflate(R.layout.book_category_item, parent, false)        return BookViewHolder(view)    }    override fun getItemCount(): Int = dataList.size    fun setData(data: ArrayList<BooksData>) {        dataList.clear()        dataList.addAll(data)        notifyDataSetChanged()    }    override fun onBindViewHolder(holder: BookViewHolder, position: Int) {        val item = dataList[position]        holder.bookNameTextView.text = item.bookName        Glide.with(context).load(item.imageUrl).placeholder(R.drawable.ic_launcher_background)            .error(R.drawable.vec_quiz).into(holder.bookImageView)    }}

Json file

{"items": \[{"bookName": "Basic Grammar","imageUrl": "https://drive.google.com/uc?id=1_eVoTO4IeTW1gAbNBb_0-GWASecBNGgS"    } ,    {"bookName": "Basic Grammar","imageUrl": "https://drive.google.com/uc?id=1_eVoTO4IeTW1gAbNBb_0-GWASecBNGgS"    }\]}

Please Help me to fix this error, thanks


Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>