0

我想在android Scala eclipse插件中实现android的搜索方法:

我有这个方法:

val queryListener = new OnQueryTextListener() {

override def onQueryTextChange(newText: String): Boolean = {
  if (TextUtils.isEmpty(newText)) {
    getActivity.getActionBar.setSubtitle("List")
    val grid_currentQuery = null
  } else {
    getActivity.getActionBar.setSubtitle("List - Searching for: " + newText)
    val grid_currentQuery = newText
  }
  getLoaderManager.restartLoader(0, null, this)

  false
}

在这一行“getLoaderManager.restartLoader(0, null, this)”我对“this”有一个错误,我的错误是:

 type mismatch; found : android.widget.SearchView.OnQueryTextListener required: 
  android.support.v4.app.LoaderManager.LoaderCallbacks[?]

你能帮我完成这个实现吗

提前致谢!

更新 1:

以前用过,还是报错

 getLoaderManager.restartLoader(0, null, BooksFragment.this)

我的错误是:

 Multiple markers at this line
- type mismatch; found : com.android.BooksFragment required: 
 android.support.v4.app.LoaderManager.LoaderCallbacks[?]
- type mismatch; found : com.android.BooksFragment required: 
4

1 回答 1

1

您的“this”指的是 OnQueryTextListener 类型的东西。它应该是 LoaderCallbacks[?] 类型的变量的引用。尝试用 LoaderCallbacks 变量替换它。

也许 getLoaderManager.restartLoader(0, null, yourLoaderClassVariable)

例如,如果您遵循官方的android文档,请尝试

getLoaderManager.restartLoader(0, null, CursorLoaderListFragment.this)

更新:

class CursorLoaderListFragment extends ListFragment with OnQueryTextListener with OnCloseListener with LoaderManager.LoaderCallbacks[Cursor] {
...
    def onQueryTextChange(newText: String): Boolean = {
    ...
        getLoaderManager.restartLoader(0, null, CursorLoaderListFragment.this)
    ...
    true
    }
}

在您的情况下,它可能如下所示:

class BooksFragment extends ListFragment with OnQueryTextListener with OnCloseListener with LoaderManager.LoaderCallbacks[Cursor]

更新 2:对于第二个错误,尝试添加这三行。您可以稍后实施它们。

def onLoadFinished(l: Loader[Cursor], c: Cursor): Unit = ??? 
def onLoaderReset(l: Loader[Cursor]): Unit = ??? 
def onQueryTextChange(s: String): Boolean = ???
于 2013-08-22T18:54:44.060 回答