android kotlin单击侦听器无法替换片段
我创建了一个简单的应用程序来学习如何在kotlin中使用fragment 和往常一样,如果我创建回收器视图,我必须创建一个新页面来显示项目的详细信息,因此在搜索广告后,通过我的适配器中的创建界面询问某个答案,包括一个有趣的内容,我在MainActivity中覆盖该片段,并在项目单击时执行它,我这样做了,但在我完成单击后,什么也不做,但没有错误 这是我的适配器android kotlin单击侦听器无法替换片段,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,我创建了一个简单的应用程序来学习如何在kotlin中使用fragment 和往常一样,如果我创建回收器视图,我必须创建一个新页面来显示项目的详细信息,因此在搜索广告后,通过我的适配器中的创建界面询问某个答案,包括一个有趣的内容,我在MainActivity中覆盖该片段,并在项目单击时执行它,我这样做了,但在我完成单击后,什么也不做,但没有错误 这是我的适配器 class ContentAdapter constructor(private val activity: MainActivity,
class ContentAdapter constructor(private val activity: MainActivity, private var listOfData: ArrayList<MainMarketTickClass>, val listener: ContentListener) : RecyclerView.Adapter<ContentAdapter.ViewHolder>() {
override fun getItemCount(): Int = listOfData.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
var inf = ViewHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.maintick, parent, false))
return inf
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(listOfData, listener)
}
inner class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) {
fun bind(listOfData: ArrayList<MainMarketTickClass>, listener: ContentListener) {
val dataListin2 = listOfData[adapterPosition]
itemView.textView.text = dataListin2.title
itemView.MainImage.setOnClickListener {
listener.onItemClicked(listOfData.get(adapterPosition))
}
}
}
interface ContentListener {
fun onItemClicked(item: MainMarketTickClass){
}
}
在适配器类中
itemView.MainImage.setOnClickListener {
listener.onItemClicked(listOfData.get(adapterPosition))
acitivity.onItemClicked(listOfData.get(adapterPosition))
}
或
在片段中
var adapter = ContentAdapter (MainActivity(),ITEMSList, <Pass the context of main activity here>)
/************/
在片段中传递数据
主要活动
override fun onItemClicked(item: MainMarketTickClass) {
var ft1 : FragmentTransaction = supportFragmentManager.beginTransaction()
ft1.replace(R.id.MainFrame,AddCar.newInstanceaddcar(item.someValue))
ft1.commit()
}
在你的片段中
companion object{
fun newInstanceaddcar(someValue : String) : AddCar{
val frag = AddCar()
val args = Bundle()
args.putString("key_some_value", someValue);
frag.arguments = args
return frag
}
}
然后在片段的onCreate方法中,从参数中获取值并将其放入某个变量中
arguments?.let{
someVariableDeclaredInAddCarFrag = it.getString("key_some_value")
}
谢谢你们,它和片段中的最后一个一起工作,但另一个问题是如何使用同样的乐趣来传递数据哪一个数据???您已经在侦听器中传递main类类型数据。在主活动中,您将获得MainMarketTickClass类型。您想在AddCar fragement中传递数据吗?是的,我想尝试发送字符串,比如'anything'和git null
override fun onItemClicked(item: MainMarketTickClass) {
var ft1 : FragmentTransaction = supportFragmentManager.beginTransaction()
ft1.replace(R.id.MainFrame,AddCar.newInstanceaddcar(item.someValue))
ft1.commit()
}
companion object{
fun newInstanceaddcar(someValue : String) : AddCar{
val frag = AddCar()
val args = Bundle()
args.putString("key_some_value", someValue);
frag.arguments = args
return frag
}
}
arguments?.let{
someVariableDeclaredInAddCarFrag = it.getString("key_some_value")
}