android / views-widgets-samples

Multiple samples showing the best practices in views-widgets on Android.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Why My Recycler view is not showing anything??

yash292005 opened this issue · comments

this is my main activity:

package com.example.recyclerviewpractice

import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.recyclerviewpractice.databinding.ActivityMainBinding
import com.google.android.material.snackbar.Snackbar

@Suppress("LocalVariableName", "PrivatePropertyName", "FunctionName")
class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
private val ExampleItems: ArrayList<TestItems> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    setSupportActionBar(binding.toolbar)


    binding.fab.setOnClickListener { view ->
        Snackbar.make(view, "Coding Makes Me Happy", Snackbar.LENGTH_LONG)
            .setAction("Action", null).show()
    }
    val mainView = findViewById<RecyclerView>(R.id.MainView)
    mainView.layoutManager = LinearLayoutManager(this)
    mainView.adapter = TestAdapter()
    LoadSampleData()

}

private fun LoadSampleData() {
    ExampleItems.add(TestItems(R.drawable.ic_launcher_background, "Name1"))
    ExampleItems.add(TestItems(android.R.drawable.checkbox_off_background, "Name2"))
    ExampleItems.add(TestItems(android.R.drawable.bottom_bar, "Name3"))
    ExampleItems.add(TestItems(android.R.drawable.btn_default_small, "Name4"))
    ExampleItems.add(TestItems(android.R.drawable.btn_default_small, "Name5"))
    ExampleItems.add(TestItems(R.drawable.ic_launcher_background, "Name6"))
    ExampleItems.add(TestItems(R.drawable.ic_launcher_background, "Name7"))
    ExampleItems.add(TestItems(R.drawable.ic_launcher_background, "Name8"))
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the menu; this adds items to the action bar if it is present.
    menuInflater.inflate(R.menu.menu_main, menu)
    return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    return when (item.itemId) {
        R.id.action_settings -> true
        else -> super.onOptionsItemSelected(item)
    }
}

}

This is my Adapter:

package com.example.recyclerviewpractice

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide

@Suppress("PropertyName")
class TestAdapter: RecyclerView.Adapter<TestAdapter.ViewHolder>() {
private val dataSet: ArrayList = ArrayList()
inner class ViewHolder(view: View): RecyclerView.ViewHolder(view){
val ShowImage: ImageView = itemView.findViewById(R.id.Sample_Image)
val ShowText: TextView = itemView.findViewById(R.id.Sample_Text)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TestAdapter.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_content, parent, false)
return ViewHolder(view)
}

override fun onBindViewHolder(holder: TestAdapter.ViewHolder, position: Int) {
    val currentItems = dataSet[position]
    holder.ShowText.text = currentItems.MainText
    Glide.with(holder.itemView.context).load(currentItems.MainImage).into(holder.ShowImage)
}

override fun getItemCount(): Int {
    return dataSet.size
}

}

this is main Activity.xml:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<com.google.android.material.appbar.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/Theme.RecyclerViewPractice.AppBarOverlay">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        app:title="@string/TitleName"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/Theme.RecyclerViewPractice.PopupOverlay" />

</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:listitem="@layout/item_content"
    android:id="@+id/MainView"/>

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:srcCompat="@android:drawable/ic_menu_edit" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

and this is the item content:

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_margin="10dp"
app:cardCornerRadius="10dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/Sample_Text"
        android:layout_gravity="center"
        android:layout_marginStart="10dp"
        android:layout_marginEnd="5dp"
        android:textSize="20sp"
        android:text="@string/sample_text"/>
</androidx.appcompat.widget.LinearLayoutCompat>

</androidx.cardview.widget.CardView>

Thanks i've resolved it my self