繁体   English   中英

如何在 Kotlin Android 中从我的应用程序和 FireStore 中删除 recyclerView 列表?

[英]How to delete the recyclerView list from my app and FireStore in Kotlin Android?

我是 Kotlin Android 的新手。 我在我的应用程序上添加了删除按钮来删除 recyclerView。 当我单击此按钮时,我想从 recyclerview 列表(在我的应用程序上)和我的 firestore 中删除。 我创建了界面和 setonclick 侦听器,但是当我单击删除按钮时,它不起作用。 我想念什么? 我该怎么办? 我在下面分享了我的适配器和活动代码,你可以很容易地看到我错过了什么。 谢谢。

我的适配器代码;

class NoteAdapter(private var titleText: ArrayList<String>, private var imageButton: ArrayList<String>, private var noteText: ArrayList<String>) : RecyclerView.Adapter<NoteAdapter.ViewHolder>() {


    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        val itemTitle : TextView = itemView.findViewById(R.id.recyclerTitleText)
        val itemImage : ImageView = itemView.findViewById(R.id.recyclerImage)
        val itemDelete : ImageView = itemView.findViewById(R.id.delete)


        init {

            itemView.setOnClickListener { v: View ->


               // Toast.makeText(itemView.context,"You clicked on item # ${position + 1}", Toast.LENGTH_SHORT).show()
                val intent = Intent(itemView.context, PastNotesActivity::class.java)
                intent.putExtra("oldTitle", titleText[position])
                intent.putExtra("oldNote", noteText[position])
                intent.putExtra("oldImage", imageButton[position])
                itemView.context.startActivity(intent)

            }

        }
    }

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

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

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        holder.itemTitle.text = titleText[position]
        Picasso.get().load(imageButton[position]).resize(150,150).into(holder.itemImage)

    }

    override fun getItemCount(): Int {

        return titleText.size
    }
}

我的活动代码,

class ListViewActivity : AppCompatActivity() {

    private  lateinit var auth: FirebaseAuth
    private lateinit var db : FirebaseFirestore

    var titleTextFromFB : ArrayList<String> = ArrayList()
    var noteTextFromFB : ArrayList<String> = ArrayList()
    var imageFromFB : ArrayList<String> = ArrayList()

    var adapter: NoteAdapter? = null


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_list_view)

        auth = FirebaseAuth.getInstance()
        db = FirebaseFirestore.getInstance()

        getDataFromFirestore()

        // recyclerview

        var layoutManager = LinearLayoutManager(this)
        recyclerView.layoutManager = layoutManager

        adapter = NoteAdapter(titleTextFromFB, imageFromFB, noteTextFromFB)
        recyclerView.adapter = adapter


    }


    override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        val menuInflater = menuInflater
        menuInflater.inflate(R.menu.add_note, menu)

        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        if (item.itemId == R.id.add_note_click) {
            // Take Notes Activity
            val intent = Intent(applicationContext, TakeNotesActivity::class.java)
            intent.putExtra("info","new")
            startActivity(intent)

        } else if (item.itemId == R.id.log_out) {

            val alert = AlertDialog.Builder(this)

            alert.setTitle("Log Out")
            alert.setMessage("Are you sure to logout from the app ?")
            alert.setPositiveButton("Yes") {dialog, which ->

                auth.signOut()
                val intent = Intent(applicationContext, MainActivity::class.java)
                startActivity(intent)
                finish()
            }

            alert.setNegativeButton("No") {dialog, which ->

            }

            alert.show()

        }

        return super.onOptionsItemSelected(item)
    }

    // get data from firestore

    fun getDataFromFirestore() {

        db.collection("Notes").orderBy("date", Query.Direction.DESCENDING).addSnapshotListener { snapshot, exception ->

            if (exception != null) {

                // If there is a error ,

                Toast.makeText(applicationContext, exception.localizedMessage.toString(), Toast.LENGTH_LONG).show()

            } else {

                if (snapshot != null) {

                    if (!snapshot.isEmpty) {

                        titleTextFromFB.clear()
                        noteTextFromFB.clear()

                        val documents = snapshot.documents
                        for (document in documents) {

                            val userEmail = document.get("userEmail") as String
                            val noteTitle = document.get("noteTitle") as String
                            val yourNote = document.get("yourNote") as String
                            val downloadUrl = document.get("downloadUrl") as String
                            val timestamp = document.get("date") as Timestamp
                            val date = timestamp.toDate()

                            titleTextFromFB.add(noteTitle)
                            imageFromFB.add(downloadUrl)
                            noteTextFromFB.add(yourNote)

                            adapter!!.notifyDataSetChanged()

                        }
                    }
                }

            }


        }


    }


}

您需要在onBindViewHolder内实现单击按钮

在适配器中添加用于从项目列表中删除项目和notifeDataSetChanged()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM