android - 从另一个 Activity (Kotlin) 将项目添加到 RecyclerView
问题描述
我有以下内容:
- 带有 RecyclerView 的主 Activity,它是从 Array List 中填充的
- 适配器(当然)
- 另一个应创建新项目的 Activity,将其添加到 Main Activity 上的 RecyclerView 然后关闭
主要问题是,如何从另一个 Activity 向 RecyclerView 添加项目?
主要活动代码
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val items = arrayListOf<CustomData>()
items.add(CustomData("Name", R.drawable.icon, 50, "Weekly", "Monday", 1, 50))
button.setOnClickListener {
val intent = Intent(this, NewItem::class.java)
startActivity(intent)
}
itemsListView.apply {
layoutManager = LinearLayoutManager(this@MainActivity)
adapter = ItemsAdapter(items)
}
}
适配器代码
class ItemsAdapter(private val items: ArrayList<CustomData>) :
RecyclerView.Adapter<ItemsAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.wish_row, parent, false)
val holder = ViewHolder(view)
view.setOnClickListener {
val intent = Intent(parent.context, ItemView::class.java)
intent.putExtra("Name", items[holder.adapterPosition].name)
intent.putExtra("Price", items[holder.adapterPosition].price)
intent.putExtra("Icon", items[holder.adapterPosition].image)
parent.context.startActivity(intent)
}
return holder
}
override fun getItemCount() = items.size
override fun onBindViewHolder(holder: ItemsAdapter.ViewHolder, position: Int) {
holder.name.text = items[position].name
holder.price.text = items[position].price.toString()
holder.image.setImageDrawable(holder.image.context.getDrawable(items[position].image))
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val image: ImageView = itemView.findViewById(R.id.imageView)
val name: TextView = itemView.findViewById(R.id.textView)
val price: TextView = itemView.findViewById(R.id.textView2)
}
}
我想将项目添加到 Recyclerview 的另一个 Activity
class NewItem : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.new_item_activity)
val items = arrayListOf<CustomData>()
items.add(CustomData("Name2", R.drawable.icon, 50, "Weekly", "Monday", 2, 50))
newItemButton.setOnClickListener {
itemsListView.layoutManager = LinearLayoutManager(this)
itemsListView.adapter = itemsAdapter(items)
finish()
}
}
}
解决方案
从您的NewItem
活动中添加新项目时,传递一个捆绑包,将该项目添加到您的MainActivity
.
然后在您的 中MainActivity
,获取该捆绑包并将该新项目设置为您的 RecyclerView。
推荐阅读
- debugging - 我们可以从visual studio2019调试vb6中的代码吗
- javascript - 循环依赖节点js
- amazon-ecs - 任务停止后ECS服务发现更新太晚
- sony-camera-api - 内容 URL - 索尼相机 API
- python - 仅在 Pandas 中将不规则日期格式转换为年份
- java - 无法自动装配 WebTestClient
- javascript - 正则表达式 C# 与 javascript 不一致
- javascript - JS / Canvas - 如何仅在按下键时更新 draw() 函数?
- html - 当我减小浏览器窗口大小时,使 2 张图像留在我背景上的固定位置
- android - 改版本为Androidx后,没有变成mqtt connect