нажатие кнопки внутри элемента в программе просмотра обновляет всю активность - PullRequest
0 голосов
/ 03 мая 2018

Я реализую RecyclerView, в котором есть элементы, имеющие кнопку удаления, данные поступают из Firebase, а кнопка удаления изменяет «сохраненное» значение в firebase. этот обзор переработчика присутствует в третьем меню нижней панели навигации основного действия.

Когда я нажимаю кнопку удаления, все действия возобновляются, и действие начинается с первого меню нижней панели навигации

Как мне остановить это перезапускающее действие?

Я прилагаю код адаптера RecyclerView ниже:

package com.demo.ash.demoapp

import android.content.Intent
import android.os.Environment
import android.support.v7.widget.RecyclerView
import android.transition.TransitionManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.offline_client.view.*
import kotlinx.android.synthetic.main.activity_main.*
import org.json.JSONObject
import java.io.File

/**
 * Created by ashwin on 3/5/2018.
 */
class OfflineClientAdapter(val list: MutableList<Client>, val clientIDList:MutableList<String>): RecyclerView.Adapter<OfflineClientViewHolder>() {
    lateinit var vg: ViewGroup

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

    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): OfflineClientViewHolder {
        val layoutInflator = LayoutInflater.from(parent?.context)
        vg = parent!!
        val cellForRow = layoutInflator.inflate(R.layout.offline_client, parent, false)
        return OfflineClientViewHolder(cellForRow, "")
    }


    override fun onBindViewHolder(holder: OfflineClientViewHolder?, position: Int) {
        val row = list.get(position)
        holder?.view?.NameView?.text = row.cname
        holder?.view?.PhnumView?.text = row.cphonenum

        holder?.clientID = clientIDList[position]

        var encodedimage = IOHelper.stringToBitmap(row.cimage)
        holder?.view?.client_image?.setImageBitmap(encodedimage)

        val user = FirebaseAuth.getInstance().currentUser

        var database = FirebaseDatabase.getInstance().getReference("Users").child(user?.phoneNumber)
                .child("Clients").child(clientIDList[position])

        holder?.view?.delete_client?.setOnClickListener {
            val path = Environment.getExternalStorageDirectory()
            val dir = File(path.toString() + "/pranjal/saved_clients.txt")
            var clients = IOHelper.stringFromFile(dir)

            var t = JSONObject(clients)

            t.remove(clientIDList[position])

            database.child("saved").setValue(false)
        }
    }
}

class OfflineClientViewHolder(val view: View, var clientID: String): RecyclerView.ViewHolder(view) {
    init{
        view.setOnClickListener {
            val intent = Intent(view.context, OfflinePatientListActivity::class.java)
            intent.putExtra("clientID",clientID)
            view.context.startActivity(intent)
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Когда я нажимаю кнопку удаления, все действия возобновляются, и действие начинается с первого меню нижней панели навигации

Звучит так, будто ваше приложение падает. Если вы не делаете что-то, что непреднамеренно (или намеренно?) Перезапустит, сказал Activity.

Похоже, что вы меняете данные адаптеров (удаляете их), не вызывая необходимые методы, чтобы предупредить адаптер и повторно просмотреть, что ему нужно обновить свои данные. Убедитесь, что вы вызвали необходимые .notify...() методы после обновления данных.

Если кнопка удаления является частью recylerview, убедитесь, что вы учитываете ее в соответствующих обратных вызовах / коде.

Я бы позаботился о том, чтобы в вашем коде .delete_client?.setOnClickListener { ... } не происходило сбоев.

Также убедитесь, что у вас нет доступа к пустому списку в других обратных вызовах.

Надеюсь, это поможет!

0 голосов
/ 03 мая 2018

Если вы не хотите начинать занятие нажатием кнопки, зачем вам этот код?

view.context.startActivity(intent)

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...