[英]How to get value from activity in adapter using kotlin
I have a value in my我的价值观
txtId.text = iduser
this is locate in MainActivity, i want to pass this value from my MainActivity这是位于 MainActivity,我想从我的 MainActivity 传递这个值
to my Adapter到我的适配器
override fun getParams(): MutableMap<String, String> {
val params = HashMap<String, String>()
params["userid"] = ???
params["produkid"]=produks[position].id.toString()
params["quantity"]= 1.toString()
return params
}
i want this我要这个
params["userid"] = ???
to have a value from textview in my MainActivity, but i dont know how to passing that value to my Adapter.在我的 MainActivity 中有一个来自 textview 的值,但我不知道如何将该值传递给我的适配器。 So i can store it into my database所以我可以将它存储到我的数据库中
This is my code in MainActivity这是我在 MainActivity 中的代码
class MainActivity : AppCompatActivity() {
val fragments:ArrayList<Fragment> = ArrayList()
var iduser=""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fragments.add(HomeFragment())
fragments.add(CartFragment())
fragments.add(OrderHistoryFragment())
fragments.add(ProfileFragment())
iduser =intent.getStringExtra(LoginActivity.IDUSER).toString()
txtId.text = iduser
viewPager.adapter = Adapter(this,fragments)
viewPager.registerOnPageChangeCallback(object:ViewPager2.OnPageChangeCallback(){
override fun onPageSelected(position: Int) {
val menu = arrayOf(R.id.itemHome,R.id.itemCart,R.id.itemOrderHistory,R.id.itemProfile)
bottomNav.selectedItemId=menu[position]
}
})
bottomNav.setOnNavigationItemSelectedListener {
if(it.itemId == R.id.itemHome) {
viewPager.currentItem = 0
} else if(it.itemId == R.id.itemCart) {
viewPager.currentItem = 1
} else if(it.itemId == R.id.itemOrderHistory) {
viewPager.currentItem = 2
} else {
viewPager.currentItem = 3
}
true
}
}
}
And this is my code in my Adapter这是我在适配器中的代码
class ProdukAdapter(val produks:ArrayList<Produk>, val ctx:Context):RecyclerView.Adapter<ProdukAdapter.ProdukViewHolder>(){
class ProdukViewHolder(val view: View):RecyclerView.ViewHolder(view){
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProdukViewHolder {
val inflater = LayoutInflater.from(parent.context)
val view = inflater.inflate(R.layout.home_card_layout,parent,false)
return ProdukViewHolder(view)
}
override fun onBindViewHolder(holder: ProdukViewHolder, position: Int) {
val url = produks[position].gambar
Picasso.get().load(url).into(holder.view.imgProduk)
holder.view.txtJudul.text = produks[position].judul
holder.view.txtDeskripsi.text = produks[position].deskripsi
holder.view.txtHarga.text = produks[position].harga.toString()
holder.view.btnAddtoCart.setOnClickListener {
val q = Volley.newRequestQueue(ctx)
val url = "http://10.0.2.2/project/addtocart.php"
val stringRequest = object: StringRequest(
Request.Method.POST, url,
Response.Listener {
Log.d("cekparams", it)
},
Response.ErrorListener {
Log.d("cekparams", it.message.toString())
}) {
override fun getParams(): MutableMap<String, String> {
val params = HashMap<String, String>()
params["userid"] = ???
params["produkid"]=produks[position].id.toString()
params["quantity"]= 1.toString()
return params
}
}
q.add(stringRequest)
}
}
override fun getItemCount(): Int {
return produks.size
}
}
So for a simple i want this code所以对于一个简单的我想要这个代码
params["userid"] = ???
have a value from this code从此代码中有一个值
txtId.text = iduser
like this像这样
params["userid"] = txtId.text
You can simply add new attributes in your ProdukAdapter
to store iduser
.您可以简单地在ProdukAdapter
中添加新属性来存储iduser
。 When you initialized the adapter, pass it value from MainActivity
to ProdukAdapter
.初始化适配器时,将它的值从MainActivity
传递给ProdukAdapter
。
Update your ProdukAdapter
like this:像这样更新您的ProdukAdapter
:
class ProdukAdapter(val iduser: String, val produks:ArrayList<Produk>, val ctx:Context):RecyclerView.Adapter<ProdukAdapter.ProdukViewHolder>()
in your MainActivity
:在您的MainActivity
中:
val produkAdapter = ProdukAdapter(txtId.text, produks, this)
so in your getParams
method simply use this value所以在你的getParams
方法中只需使用这个值
override fun getParams(): MutableMap<String, String> {
val params = HashMap<String, String>()
params["userid"] = iduser
params["produkid"]=produks[position].id.toString()
params["quantity"]= 1.toString()
return params
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.