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