Java 将ListView活动作为(this)传递给实例化对象ie ArrayAdapter可以吗?

Java 将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

我有一个listview
NoteList
,它包含一个方法
doListRefresh()
从sqlite
note
表中选择列表内容,填充一个游标(它填充我的
数组适配器
),然后调用
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构造函数不包括上下文ie
noteArayAdapter(Activity\u Activity,int\u layout,ArrayList\u notes)
。所以只包括活动而不包括上下文。或者我遗漏了什么吗?实际上是的,我可能会改变它,直接通过构造函数而不是setter传递引用。但是,正如我上面所说的,我认为它还没有传递,因为我传递活动是为了数组适配器,而不是上下文。哦,它在ListView中。我是这样做的关于我自己的应用程序,我刚刚使用了ListActivity,而上下文/活动是ListAdapter(类似于ArrayAdapter)构造函数的第一个参数。我想在你的情况下,你必须添加视图作为另一个参数。但这还不算太坏,对吧?