Search result is visible in logcat but on screen searched line is not appearing in view

Viewed 30
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/searchItems"
        android:title="@string/search"
        app:showAsAction="ifRoom"
        android:icon="@drawable/ic_baseline_search_24"
        app:actionViewClass="android.widget.SearchView"/>
    <item android:id="@+id/menu_logout"
        android:title="@string/logout"

        />

</menu>

this is menu.xml

<?xml version="1.0" encoding="utf-8"?>
<layout 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">

    <data>

    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".view.AdminActivity">
        <ImageView
            android:id="@+id/searchView"
            android:layout_width="50dp"
            android:layout_height="50dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            android:src="@drawable/arivali"
            android:layout_marginStart="4dp"
            android:layout_marginTop="8dp"
            android:layout_alignParentTop="true"
            />

        <View
            android:id="@+id/view1"
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:background="@color/black"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/searchView"/>
        <TextView
            android:id="@+id/top_tv"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            android:text="@string/excel_data"
            android:fontFamily="cursive"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintTop_toTopOf="@id/searchView"
            app:layout_constraintBottom_toBottomOf="@id/searchView"
            android:textAlignment="center"
            android:layout_marginEnd="16dp"
            app:layout_constraintStart_toEndOf="@+id/searchView"/>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_excel_data"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_margin="8dp"
            app:layout_constraintTop_toBottomOf="@id/view1"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>


        <TextView
            android:id="@+id/btn_upload"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:visibility="gone"
            android:paddingTop="250dp"
            android:paddingBottom="250dp"
            android:text="@string/click_here_to_upload_an_excel_sheet"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

        <ProgressBar
            android:id="@+id/progressbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

this is activity and user xml

class AdminAndUserActivity : AppCompatActivity() {

    private val userDetailAdapter = UserDetailAdapter()
    private lateinit var sharedPreferences: SharedPreferences
    private var isInsert: Boolean = false
    private lateinit var binding: ActivityAdminAndUserBinding
    private var userType: String? = null
    private var studentList: MutableList<Student>? = null
    private lateinit var viewModel: AdminAndUserViewModel
    private lateinit var client: AsyncHttpClient
    private lateinit var workbook: Workbook
    private var name: String? = null
    private var gender: String? = null
    private var city: String? = null
    private var status: String? = null
    private lateinit var dialog: Dialog
    private lateinit var searchView: SearchView



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityAdminAndUserBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)




        dialog = Dialog(this)
        sharedPreferences = this.getSharedPreferences(SHARED_PREF, Context.MODE_PRIVATE)
        viewModel = ViewModelProvider(
            this,
            ViewModelProvider.AndroidViewModelFactory.getInstance(application)
        )[AdminAndUserViewModel::class.java]

        binding.progressbar.visibility = View.GONE
        studentList = mutableListOf()
        isInsert = sharedPreferences.getBoolean("insert_key", false)
        binding.rvExcelData.apply {
            adapter = userDetailAdapter
            layoutManager =
                LinearLayoutManager(this@AdminAndUserActivity, LinearLayoutManager.VERTICAL, false)
        }

        if (intent != null) {
            userType = intent.getStringExtra(USER_TYPE)!!
        }
        if (userType.equals("admin")) {
            if (!isInsert) {
                binding.topTv.text = getString(R.string.upload_excel_sheet)
                binding.btnUpload.visibility = View.VISIBLE
                binding.rvExcelData.visibility = View.GONE
            } else {
                binding.topTv.text = getString(R.string.excel_sheet)
                binding.btnUpload.visibility = View.GONE
                binding.progressbar.visibility = View.VISIBLE
                binding.rvExcelData.visibility = View.VISIBLE
                uploadUserDetails()
            }
        } else {
            binding.topTv.text = getString(R.string.excel_sheet)
            binding.btnUpload.visibility = View.GONE
            binding.rvExcelData.visibility = View.VISIBLE
            binding.progressbar.visibility = View.VISIBLE
            uploadUserDetails()
        }


        binding.btnUpload.setOnClickListener {
            binding.progressbar.visibility = View.VISIBLE
            readExcelFile()
        }

        userDetailAdapter.itemClickListener {

            viewModel.updateStudent(Student(it.id, it.name, it.gender, it.city, "Active"))
            Toast.makeText(this, "${it.name} Updated Active", Toast.LENGTH_SHORT).show()
            //binding.progressbar.visibility = View.VISIBLE
            finish()
            startActivity(intent)

        }


    }


    private fun readExcelFile() {
        client = AsyncHttpClient()
        client[EXCELSHEET_URL, object : FileAsyncHttpResponseHandler(this) {
            override fun onFailure(
                statusCode: Int,
                headers: Array<Header>,
                throwable: Throwable,
                file: File
            ) {
                binding.progressbar.visibility = View.GONE
                Log.e("====", "Error is : " + throwable.message)
                Toast.makeText(
                    this@AdminAndUserActivity,
                    "Fail to import Excel file",
                    Toast.LENGTH_SHORT
                ).show()
            }


            override fun onSuccess(statusCode: Int, headers: Array<Header>, file: File) {
                binding.progressbar.visibility = View.GONE
                val ws = WorkbookSettings()
                ws.gcDisabled = true
                try {
                    workbook = Workbook.getWorkbook(file)
                    val sheet = workbook.getSheet(0)
                    for (i in 0 until sheet.rows) {
                        val row = sheet.getRow(i)
                        name = row[0].contents
                        gender = row[1].contents
                        city = row[2].contents
                        status = row[3].contents
                        studentList?.add(Student(0L, name!!, gender!!, city!!, status!!))
                    }
                    studentList?.let { insertStudentData(it) }

                } catch (e: IOException) {
                    binding.progressbar.visibility = View.GONE
                    Toast.makeText(this@AdminAndUserActivity, e.message, Toast.LENGTH_SHORT)
                        .show()
                    e.printStackTrace()
                } catch (e: BiffException) {
                    binding.progressbar.visibility = View.GONE
                    e.printStackTrace()
                    Toast.makeText(this@AdminAndUserActivity, e.message, Toast.LENGTH_SHORT)
                        .show()
                }
            }

        }]

    }


    private fun insertStudentData(mutableList: MutableList<Student>) {
        viewModel.insertStudent(mutableList)
        val editor: SharedPreferences.Editor = sharedPreferences.edit()
        editor.putBoolean("insert_key", true)
        editor.apply()
        editor.commit()

        dialog.setContentView(R.layout.custom_layout_dialog)
        val no = dialog.findViewById<Button>(R.id.tv_no)
        val yes = dialog.findViewById<Button>(R.id.tv_yes)

        no.setOnClickListener {
            dialog.dismiss()
            finish()
        }

        yes.setOnClickListener {
            dialog.dismiss()
            binding.topTv.text = getString(R.string.excel_sheet)
            binding.btnUpload.visibility = View.GONE
            binding.progressbar.visibility = View.VISIBLE
            binding.rvExcelData.visibility = View.VISIBLE
            uploadUserDetails()
        }

        dialog.show()
    }


    private fun uploadUserDetails() {
        viewModel.allStudent.observe(this) {
            it.let {
                binding.progressbar.visibility = View.GONE
                studentList?.addAll(it)
                studentList?.let { it1 ->
                    userDetailAdapter.setContentList(it1, userType!!)

                }


            }
        }


    }


    override fun onBackPressed() {
        moveTaskToBack(true)

    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        if (item.itemId == R.id.menu_logout) {
            val intent = Intent(this@AdminAndUserActivity, MainActivity::class.java)
            startActivity(intent)
            finish()
            return true

        }
        return true

    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        val inflater = menuInflater
        inflater.inflate(R.menu.menu, menu)
        val search = menu.findItem(R.id.searchItems)
        searchView = search.actionView as SearchView
        searchView.isSubmitButtonEnabled = true
        searchView.setOnQueryTextListener(object:
        SearchView.OnQueryTextListener{
            override fun onQueryTextSubmit(query: String?): Boolean {
                if (query != null) {
                    getItemsFromDb(query)
                }
                return true
            }

            override fun onQueryTextChange(newText: String?): Boolean {
                if (newText != null) {
                    getItemsFromDb(newText)
                }
                return true
            }

        })
        return super.onCreateOptionsMenu(menu)


    }

    private fun getItemsFromDb(searchText: String) {
        var searchText = searchText
        searchText = "%$searchText%"
        viewModel.searchForItems(name = searchText).observe(this@AdminAndUserActivity, { list ->
            list?.let {
                Log.e("List = ", list.toString())
            }

        })
                    viewModel.allStudent
    }

    }

this is AdminandUserActivity.kt

I have a list of data in recycler view and I want to use search view so I can search people by name, my search view is working fine because when I search any name the search result is visible in Logcat but the searched name is not appearing on Top can someone please explain why, I am stuck on this for more then 2 days

0 Answers
Related