【问题标题】:Android SearchView in actionbar not working操作栏中的Android SearchView不起作用
【发布时间】:2014-04-18 19:53:29
【问题描述】:

首先很抱歉,如果我是 android 和 java 的新手,并且仍然想为我的论文实现一些关于我正在创建的应用程序的东西,我只希望它在操作栏中有一个搜索视图,以便搜索某个活动搜索我的自定义列表视图中的相应字母或单词......我不知道在“doMySearch(字符串查询)”中放入什么以获得结果。

SearchResultsActivity.java

  import android.app.ActionBar;
  import android.app.ListActivity;
  import android.app.SearchManager;
  import android.content.Intent;
  import android.os.Bundle;
  import android.widget.TextView;

  public class SearchResultsActivity extends ListActivity {

private TextView txtQuery;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_results);

    // get the action bar
    ActionBar actionBar = getActionBar();

    // Enabling Back navigation on Action Bar icon
    actionBar.setDisplayHomeAsUpEnabled(true);

    txtQuery = (TextView) findViewById(R.id.txtQuery);

    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    setIntent(intent);
    handleIntent(intent);
}

/**
 * Handling intent data
 */
private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);

        doMySearch(query);
        txtQuery.setText("Search Query: " + query);
    }
}

private void doMySearch(String query) {
    // TODO Auto-generated method stub
       ArrayAdapter<String> adapter =new ArrayAdapter<String>(this, R.layout.subject_list_layout, R.id.subject_course_title_row);
    return adapter;

}
}

Searchable.xml

     <?xml version="1.0" encoding="utf-8"?>
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
     android:hint="@string/search_hint"
     android:label="@string/app_name" />

Manifest.xml

        <!-- Sample Search -->
    <activity
        android:name="com.randomlyroaming.com.loaopencourseware.courses.BSIT"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
        <meta-data
            android:name="android.app.default_searchable"
            android:value=".SearchResultsActivity" />
    </activity>

    <!-- Search results activity -->
    <activity
        android:name=".SearchResultsActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

请帮助...它已经重定向到 "txtQuery.setText("Search Query: " + query);" 但没有结果...我需要在方法“doMySearch(query);”中添加一些东西吗?我可以把它放在那里让它工作吗?..

谢谢您,非常感谢您的帮助...

【问题讨论】:

  • doMySearch() 中没有任何代码。什么都不会发生。 TextView 是否显示您在搜索框中输入的内容?另外,setIntent() 是做什么的?你能展示一下那个方法吗
  • 是的,它显示了我在搜索框中输入的内容,我的问题是我不知道我应该在 doMysearch 中输入什么代码,因为我真的找不到任何关于它的教程,我有我的 customListview和适配器,我不知道如何在那里编码。对不起,路易斯先生是新手
  • 您能更具体地说明您想要什么吗?适配器中有什么?你在ListView 中填充了一个数组吗?您想在搜索单词时更改适配器吗?
  • 我认为 this 是您正在寻找的。 Here is另一个教程。
  • 路易斯爵士,您好,我有一个已经从列表视图中填充的数组。我想要的是当我搜索某个单词时,它应该填充与您在搜索操作栏中键入的单词相似的内容......例如。我现在正在寻找一个包含 50 个学校科目名称的列表视图,然后我点击放大镜以搜索学校科目的名称,当我按 Enter 时,我应该得到与我在列表视图中输入的相似名称...对不起,我希望我有道理......

标签: android android-actionbar searchview


【解决方案1】:

但没有结果...我需要在方法“doMySearch(query);”中添加一些东西吗?

是的!它不应该显示任何内容,因为您只是将查询打印到TextView

如果您想访问SQLite 数据库,更改ListView 的适配器,或者做其他事情,您必须在该方法中实现它。

回到你想要的,我认为你正在寻找使用查询过滤ListView 中的单词,对吗?无论如何,Here 你有一个很好的教程。此外,this 的帖子也可能对您有所帮助。

【讨论】: