-1

My App is just shows an Empty Screen and just the action bar, recyclerView is not showing anything or is not working but there are no compile time or run time errors. It would be great help if I get an answer

Here is My MainActivity , Adapter , DataClass and Dependencies

MainActivity (kotlin)

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          setContentView(R.layout.activity_main)

          val actionBar = supportActionBar
          actionBar!!.title = "Home"

          var mydataset = listOf<HomeData>(
              HomeData(R.drawable.cover1),
              HomeData(R.drawable.cover2),
              HomeData(R.drawable.cover3),
              HomeData(R.drawable.cover1),
              HomeData(R.drawable.cover2),
              HomeData(R.drawable.cover3),
          )

          val recycler = findViewById<RecyclerView>(R.id.recycler_view1)
          recycler.adapter = ItemAdapter(mydataset)
          recycler.setHasFixedSize(true)
    }
}

ItemAdapter (Kotlin)

class ItemAdapter(private val dataset: List<HomeData>) : RecyclerView.Adapter<ItemAdapter.ViewHolder>() {


   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

          val layout = LayoutInflater.from(parent.context)
              .inflate(R.layout.card_layout, parent, false)
          return ViewHolder(layout)
      }

      override fun onBindViewHolder(holder: ViewHolder, position: Int) {
          val item = dataset[position]
          holder.imgView.setImageResource(item.drawableResId)
      }

      override fun getItemCount() = dataset.size

      class ViewHolder(var view: View) : RecyclerView.ViewHolder(view) {
          var imgView: ImageView = view.findViewById(R.id.item_image)
      }
  
}

HomeData (Kotlin)

data class HomeData (@DrawableRes val drawableResId : Int)

Dependencies

dependencies {

        implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        implementation 'androidx.core:core-ktx:1.3.2'
        implementation 'androidx.appcompat:appcompat:1.2.0'
        implementation 'com.google.android.material:material:1.3.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
        testImplementation 'junit:junit:4.+'
        androidTestImplementation 'androidx.test.ext:junit:1.1.2'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

        implementation "androidx.recyclerview:recyclerview:1.2.0"
        implementation "androidx.cardview:cardview:1.0.0"

  }

P.S. Its my first time asking question on StackOverflow and I tried my best to format and give necessary details.

Gaurav
  • 197
  • 2
  • 15
  • 1
    Before set adapter add `val mLayoutManager = LinearLayoutManager(this) recyclerView.layoutManager = mLayoutManager recyclerView.setHasFixedSize(true)` – IntelliJ Amiya May 17 '21 at 11:54

1 Answers1

1

You are missing Adding layoutManager to your recylerView.

The LayoutManager most interesting part of a RecyclerView. This object tells the RecyclerView when to recycle objects that have transitioned off-screen and where they can go. This was formerly done solely by the ListView. This feature has been separated from the RecyclerView to allow for a variety of layouts: vertical, horizontal, grid, phased, or your own!

LinearLayoutManager arranges objects in a way that resembles a regular ListView.

GridLayoutManager, like a GridView, arranges objects in a grid style.

StaggeredGridLayoutManager arranges items in a staggered grid format.

You can add layoutmanager something like below

var linearLayoutManager = LinearLayoutManager(this)
recycler.layoutManager = linearLayoutManager
Dinkar Kumar
  • 2,175
  • 2
  • 12
  • 22