Kotlin中Fragment内RecyclerView指定项跳转至不同Activity
问题描述
现有一个包含TabLayout的MainActivity,TabLayout中嵌入了Fragment,Fragment内有RecyclerView。目前已实现RecyclerView所有项跳转至OtherActivity1并传递数据,现在需要调整为:仅RecyclerView的第4项(Item4)跳转至OtherActivity2且不传递数据,其余项保持原有跳转逻辑。
解决方案
只需在RecyclerView的点击事件回调中,根据**position(索引从0开始)**判断当前点击项,分别处理跳转逻辑即可。具体修改如下:
修改TAB1Fragment.kt中的actionTAB1方法
在onItemClick回调内添加条件判断:当position == 3(对应第4项)时启动OtherActivity2;其余项保持原逻辑,启动OtherActivity1并传递数据。
修改后的代码:
// Start - Action putExtras fun actionTAB1() { tab1Adapter.setOnClickItemListenerTAB1(object : OnItemClickListener { override fun onItemClick(item: View, position: Int) { if (position == 3) { // 第4项跳转OtherActivity2,无需传参 val intent = Intent(context, OtherAtivity2::class.java) startActivity(intent) } else { // 其余项保持原逻辑,跳转OtherActivity1并传递数据 val selectedItem = tab1Adapter.getTAB1()[position] val i = Intent(context, OtherAtivity1::class.java) i.putExtra("prodNameTAB1", selectedItem.getProdNameTAB1()) i.putExtra("prodPriceTAB1", selectedItem.getProdPriceTAB1()) i.putExtra("prodImgTAB1", selectedItem.getProdImgTAB1()) startActivity(i) } } }) } // End - Action putExtras
可选优化:按内容匹配而非位置
如果后续Item4的位置可能变动,可通过匹配项名称来判断,避免位置变化导致逻辑失效:
override fun onItemClick(item: View, position: Int) { val selectedItem = tab1Adapter.getTAB1()[position] if (selectedItem.getProdNameTAB1() == "RecyclerView Item4") { val intent = Intent(context, OtherAtivity2::class.java) startActivity(intent) } else { val i = Intent(context, OtherAtivity1::class.java) i.putExtra("prodNameTAB1", selectedItem.getProdNameTAB1()) i.putExtra("prodPriceTAB1", selectedItem.getProdPriceTAB1()) i.putExtra("prodImgTAB1", selectedItem.getProdImgTAB1()) startActivity(i) } }
内容的提问来源于stack exchange,提问作者BUdiAKmal
相关产品推荐
相关产品推荐

