Java 将ListView活动作为(this)传递给实例化对象ie ArrayAdapter可以吗?
我有一个listviewJava 将ListView活动作为(this)传递给实例化对象ie ArrayAdapter可以吗?,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,我有一个listviewNoteList,它包含一个方法doListRefresh()从sqlitenote表中选择列表内容,填充一个游标(它填充我的数组适配器),然后调用adapter.NotifyDataSangeetched()刷新列表。启用(添加、编辑、删除等) 在我的自定义数组适配器中我在每行上填充了几个元素,包括一个删除按钮。在array adapter内部,我有delete按钮onClick处理程序等。我需要从array adapter内部调用NoteList.doListRefr
NoteList
,它包含一个方法doListRefresh()
从sqlitenote
表中选择列表内容,填充一个游标(它填充我的数组适配器
),然后调用adapter.NotifyDataSangeetched()
刷新列表。启用(添加、编辑、删除等)
在我的自定义数组适配器中
我在每行上填充了几个元素,包括一个删除按钮。在array adapter
内部,我有delete按钮onClick
处理程序等。我需要从array adapter
内部调用NoteList.doListRefresh()
,我使用array adapter
内部的setter来执行此操作,该setter是从NoteList
调用的,类似于adapter.setNoteListObj(这个);
。这是可行的,但我不确定这是不是最好的办法
我想问,这是否是做类似事情的“最佳实践”
谢谢你的建议
以下是一些示例代码:
在注释列表中:
onCreate(Bundle savedInstanceState) {
thisObject = this;
}
// set custom ArrayAdapter to the data
adapter = new NoteArrayAdapter(activity, R.layout.channel_note_list_item, noteList);
adapter.setNoteList(thisObject);
private NoteList callingNoteListObj;
...
// setter
protected void setNoteList(NoteList _callingNoteListObj) {
this.callingNoteListObj = _callingNoteListObj;
}
...
// within delete onclick handler (after delete)
// refresh local database
callingNoteListObj.doListRefresh();
适配器内:
onCreate(Bundle savedInstanceState) {
thisObject = this;
}
// set custom ArrayAdapter to the data
adapter = new NoteArrayAdapter(activity, R.layout.channel_note_list_item, noteList);
adapter.setNoteList(thisObject);
private NoteList callingNoteListObj;
...
// setter
protected void setNoteList(NoteList _callingNoteListObj) {
this.callingNoteListObj = _callingNoteListObj;
}
...
// within delete onclick handler (after delete)
// refresh local database
callingNoteListObj.doListRefresh();
我不明白为什么不可以。您所做的只是传递一个对实例的引用(对于那些做过Java以上工作的人来说是一个“指针”)。就个人而言,我会将
此
传递到适配器的构造函数中,并在本地存储引用。事实上,如果您将此
作为上下文对象传递,以便构造阵列适配器
。因为它是您自定义便笺列表的自定义适配器,您很可能已经这样做了。您可以强制转换上下文
(或this.getContext()
)调用NoteList并调用它,而无需使用setter。有趣的是,您这样说上下文听起来是个不错的主意,但是我的arrayadapter构造函数不包括上下文ienoteArayAdapter(Activity\u Activity,int\u layout,ArrayList\u notes)
。所以只包括活动而不包括上下文。或者我遗漏了什么吗?实际上是的,我可能会改变它,直接通过构造函数而不是setter传递引用。但是,正如我上面所说的,我认为它还没有传递,因为我传递活动是为了数组适配器,而不是上下文。哦,它在ListView中。我是这样做的关于我自己的应用程序,我刚刚使用了ListActivity,而上下文/活动是ListAdapter(类似于ArrayAdapter)构造函数的第一个参数。我想在你的情况下,你必须添加视图作为另一个参数。但这还不算太坏,对吧?