Загрузка пользовательских данных в новом действии после выбора их в представлении переработчика - PullRequest
1 голос
/ 12 июня 2019

Мое приложение в настоящее время отображает повторное представление, содержащее имена пользователей, зарегистрированных в системе с использованием Firebase.Теперь мне нужно сделать этот вид корзины кликабельным, щелкнуть имя пользователя и открыть новое действие, отображающее некоторые его данные, например имя.

class PacienteAdapter(internal var context: Context) : RecyclerView.Adapter<PacienteAdapter.ViewHolder>() {

    internal var userList: MutableList<PacienteRecycle>

    val lastItemId: String?
        get() = userList[userList.size - 1].id

    fun addAll(newUsers: List<PacienteRecycle>) {
        val init = userList.size
        userList.addAll(newUsers)
        notifyItemRangeChanged(init, newUsers.size)
    }

    init {
        this.userList = ArrayList()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val itemView = LayoutInflater.from(context).inflate(R.layout.paciente_item, parent, false)
        return ViewHolder(itemView)
    }

    //context
    override fun getItemCount(): Int {
        return userList.size
    }

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

        holder.textViewName.text = userList[position].nome
        holder.itemView.setOnClickListener {

        }
    }


    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        internal var textViewName = itemView.findViewById(R.id.nome) as TextView

    }

}

1 Ответ

1 голос
/ 12 июня 2019

Чтобы сделать этот вид повторного использования кликабельным и открыть новое действие по щелчку на имени пользователя с отображением некоторых его данных, вы можете использовать Intent, реализовать onClickListener в текстовом представлении имени и поместить данные в него следующим образом:

class PacienteAdapter(internal var context: Context) : RecyclerView.Adapter<PacienteAdapter.ViewHolder>() {

internal var userList: MutableList<PacienteRecycle>

val lastItemId: String?
    get() = userList[userList.size - 1].id

fun addAll(newUsers: List<PacienteRecycle>) {
    val init = userList.size
    userList.addAll(newUsers)
    notifyItemRangeChanged(init, newUsers.size)
}

init {
    this.userList = ArrayList()
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val itemView = LayoutInflater.from(context).inflate(R.layout.paciente_item, parent, false)
    return ViewHolder(itemView)
}

//context
override fun getItemCount(): Int {
    return userList.size
}

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

    holder.textViewName.text = userList[position].nome
    holder.textViewName.setOnClickListener {
        val intent = Intent()
            intent.setClass(context, YourActivity::class.java)

            //pass your data to the Activity
            intent.putExtra("yourDataKey1", "your-data1")
            intent.putExtra("yourDataKey2", "your-data2")
            intent.putExtra("clickedUserName", userList[position].nome)

            context.startActivity(intent)
    }
    holder.itemView.setOnClickListener {
        //put the same code here to make the whole item in the view clickable
    }
}


inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    internal var textViewName = itemView.findViewById(R.id.nome) as TextView 
} }

Затем захватите данные в другом упражнении с помощью Intent, например:

class YourActivity : Activity() {

//data
private var receivedData1: String? = ""
private var receivedData2: String? = ""
private var clickedUserName String? = ""

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

    receivedData1 = intent.extras?.getDouble("yourDataKey1")
    receivedData2 = intent.extras?.getDouble("yourDataKey2")
    clickedUserName = intent.extras?.getString("clickedUserName")
}  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...