我在Activity类的ListView
中迭代膨胀的自定义RowView
时遇到了麻烦,也无法将适当的事件分配给膨胀的自定义RowView
上的控件。
是的,我可以在适配器类GetView()
覆盖中向控件添加事件,但我认为这有几个问题。
1.我的印象是所有的应用程序逻辑都应该存在于Activity类中,而适配器应该只用于数据绑定。如果我将所有的导航逻辑、CRUD操作等添加到适配器中的控件中,那么Activity中就没有任何东西存在了,适配器现在将负责应用程序逻辑、事件处理、数据库助手类交互等。
1.我无法访问Adapter类中的StartActivity()
或this
,因此Adapter似乎不是添加导航逻辑的地方,例如,我希望在行上添加一个按钮以打开“详细信息视图”,但如果我无法调用StartActivity()
或向Intent()
传递正确的参数,则无法这样做。
因此,我想我只需要将事件添加到Activity类中的控件中。下一个问题是,在Activity类中,我不知道如何迭代ListView
项,例如,没有ListView.Items
集合可供迭代并将事件处理程序添加到各种控件中。
我已经在其他地方学习了一些Pluralsight课程和示例,通常这些课程和示例只是在ListView_ItemClick
上添加了事件处理程序,而ListView_ItemClick
是添加在Activity类中的。这非常简单,我已经实现了它并在工作,但是我无法为膨胀的自定义RowView
上的控件实现同样的效果
有没有办法迭代ListView
的膨胀自定义RowViews
?我是不是搞错了什么代码应该存在于Activity vs Adapter中?
1条答案
按热度按时间ttcibm8c1#
1.在适配器中实现
View.IOnClickListener
接口1.将此添加到适配器中
3.in 您适配器的BindData()方法,添加以下内容:
4.in 您的活动,实现
BabyNameListAdapter.InnerItemOnclickListener
和AdapterView.IOnItemClickListener
接口5.在您的活动中添加以下内容:
6.将您的
BindData()
替换为以下内容:7.将
babyNameListView.ItemClick += BabyNameListView_ItemClick;
替换为babyNameListView.OnItemClickListener = this;
8.run 您的项目。
startActivity()
,但是这会很复杂,所以你可以使用接口在你的活动中处理这个问题。希望对你有帮助。