package com.example.materialtest1\nimport android.annotation.SuppressLint\nimport androidx.appcompat.app.AppCompatActivity\nimport android.os.Bundle\nimport android.view.Menu\nimport android.view.MenuItem\nimport android.widget.Toast\nimport androidx.core.view.GravityCompat\nimport androidx.recyclerview.widget.GridLayoutManager\nimport androidx.recyclerview.widget.RecyclerView\nimport androidx.swiperefreshlayout.widget.SwipeRefreshLayout\nimport com.example.materialtest1.databinding.ActivityMainBinding\nimport com.google.android.material.snackbar.Snackbar\nimport kotlin.concurrent.thread\n\nclass MainActivity : AppCompatActivity() {\n private lateinit var binding: ActivityMainBinding\n private lateinit var adapter: FruitAdapter // 声明 adapter 变量\n val fruits = mutableListOf(Fruit("Apple", R.drawable.apple), Fruit("Banana",\n R.drawable.banana), Fruit("Orange", R.drawable.orange), Fruit("Watermelon",\n R.drawable.watermelon), Fruit("Pear", R.drawable.pear), Fruit("Grape",\n R.drawable.grape), Fruit("Pineapple", R.drawable.pineapple), Fruit("Strawberry",\n R.drawable.strawberry), Fruit("Cherry", R.drawable.cherry), Fruit("Mango",\n R.drawable.mango))\n val fruitList = ArrayList()\n\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n binding=ActivityMainBinding.inflate(layoutInflater)\n setContentView(binding.root)\n\n setSupportActionBar(binding.toolbar)\n supportActionBar?.let {\n it.setDisplayHomeAsUpEnabled(true)\n it.setHomeAsUpIndicator(R.drawable.ic_menu)\n }\n binding.navView.setCheckedItem(R.id.navCall)\n binding.navView.setNavigationItemSelectedListener {\n binding.drawerLayout.closeDrawers()\n true\n }\n binding.fab.setOnClickListener {view ->\n Snackbar.make(view, "Data deleted", Snackbar.LENGTH_SHORT)\n .setAction("Undo") {\n Toast.makeText(this, "Data restored", Toast.LENGTH_SHORT).show()\n }\n .show()\n //Toast.makeText(this, "FAB clicked", Toast.LENGTH_SHORT).show()\n //Toast.makeText(this, "FAB clicked", Toast.LENGTH_SHORT).show()\n\n }\n\n val swipeRefresh: SwipeRefreshLayout = findViewById(R.id.swipeRefresh)\n swipeRefresh.setColorSchemeResources(com.google.android.material.R.color.design_dark_default_color_primary)\n swipeRefresh.setOnRefreshListener {\n refreshFruits()\n }\n\n initFruits()\n val recyclerView: RecyclerView = findViewById(R.id.recyclerView)\n val layoutManager = GridLayoutManager(this, 2)\n recyclerView.layoutManager = layoutManager\n adapter = FruitAdapter(this, fruitList) // 初始化 adapter\n recyclerView.adapter = adapter\n }\n\n @SuppressLint("NotifyDataSetChanged")\n private fun refreshFruits() {\n val swipeRefresh: SwipeRefreshLayout = findViewById(R.id.swipeRefresh)\n\n thread {\n Thread.sleep(2000)\n runOnUiThread {\n initFruits()\n adapter.notifyDataSetChanged() // 使用 adapter\n swipeRefresh.isRefreshing = false\n }\n }\n }\n\n private fun initFruits() {\n fruitList.clear()\n repeat(50) {\n val index = (0 until fruits.size).random()\n fruitList.add(fruits[index])\n }\n }\n\n override fun onCreateOptionsMenu(menu: Menu?): Boolean {\n menuInflater.inflate(R.menu.toolbar, menu)\n return true\n }\n override fun onOptionsItemSelected(item: MenuItem): Boolean {\n when (item.itemId) {\n R.id.backup -> Toast.makeText(this, "You clicked Backup", Toast.LENGTH_SHORT).show()\n R.id.delete -> Toast.makeText(this, "You clicked Delete", Toast.LENGTH_SHORT).show()\n R.id.settings -> Toast.makeText(this, "You clicked Settings", Toast.LENGTH_SHORT).show()\n android.R.id.home -> binding.drawerLayout.openDrawer(GravityCompat.START)\n }\n return true\n }\n}