Java 如何在android中创建一个搜索栏,在搜索栏中键入文本时会出现一个建议下拉列表?

Java 如何在android中创建一个搜索栏,在搜索栏中键入文本时会出现一个建议下拉列表?,java,android,android-studio,Java,Android,Android Studio,我想创建一个带有下拉建议列表的搜索栏,该列表在搜索栏中键入文本时显示。建议列表应完全或部分覆盖活动屏幕(下拉列表本身不是新活动)。应该从后端填充结果,后端包含硬编码字符串的列表。我找不到解决这种问题的办法。有人能帮帮我吗 我的主要活动如下所示:- import android.app.ActionBar; import android.app.SearchManager; import android.content.Intent; import android.support.v7.app.A

我想创建一个带有下拉建议列表的搜索栏,该列表在搜索栏中键入文本时显示。建议列表应完全或部分覆盖活动屏幕(下拉列表本身不是新活动)。应该从后端填充结果,后端包含硬编码字符串的列表。我找不到解决这种问题的办法。有人能帮帮我吗

我的主要活动如下所示:-

import android.app.ActionBar;
import android.app.SearchManager;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;

public class MainActivity extends AppCompatActivity
{
  ArrayAdapter<String> adapter;
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView lv = (ListView)findViewById(R.id.listViewBuilding);
    ArrayList<String> arrayBuilding = new ArrayList<>();
        arrayBuilding.addAll(Arrays.asList(getResources().getStringArray(R.array.array_buildings)));

    adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, arrayBuilding);
    lv.setAdapter(adapter);
    lv.setVisibility(View.GONE);
    lv.setTextFilterEnabled(true);

    if(getSupportActionBar()!=null) {
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_search, menu);
    MenuItem item = menu.findItem(R.id.menu_search);
    SearchView searchView = (SearchView)item.getActionView();

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
        @Override
        public boolean onQueryTextSubmit(String query)
        {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText)
        {
            ListView lv = (ListView)findViewById(R.id.listViewBuilding);
            lv.setVisibility(View.VISIBLE);
            adapter.getFilter().filter(newText);
            return false;
        }

    });
    return super.onCreateOptionsMenu(menu);

   }

   }
导入android.app.ActionBar;
导入android.app.SearchManager;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.SearchView;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入java.util.ArrayList;
导入java.util.array;
公共类MainActivity扩展了AppCompatActivity
{
阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv=(ListView)findViewById(R.id.listViewBuilding);
ArrayList arrayBuilding=新建ArrayList();
addAll(Arrays.asList(getResources().getStringArray(R.array.array_buildings));
adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple\u下拉列表\u item\u 1line,arrayBuilding);
低压设置适配器(适配器);
lv.setVisibility(视图已消失);
lv.setTextFilterEnabled(真);
如果(getSupportActionBar()!=null){
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单)
{
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。菜单搜索,菜单);
MenuItem=menu.findItem(R.id.menu\u搜索);
SearchView SearchView=(SearchView)项。getActionView();
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询)
{
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText)
{
ListView lv=(ListView)findViewById(R.id.listViewBuilding);
lv.setVisibility(视图可见);
adapter.getFilter().filter(newText);
返回false;
}
});
返回super.onCreateOptions菜单(菜单);
}
}

像这样的吗?是的,像这样的。但您能解释一下我如何编写代码来显示来自后端的建议吗?(未使用数据库。它是一组硬编码字符串)请参阅
SearchView\setSuggestionsAdapter