【发布时间】:2017-07-25 19:34:36
【问题描述】:
我有一个列表视图,其中国家/地区为字符串。
lv = (ListView)findViewById(R.id.listViewCountry);
ArrayList<String> arrayCountry = new ArrayList<>();
arrayCountry.addAll(Arrays.asList(getResources().getStringArray(R.array.array_country)));
adapter = new ArrayAdapter<>(
MainActivity.this,
android.R.layout.simple_list_item_1,
arrayCountry);
lv.setAdapter(adapter);
我在工具栏上有一个 searchView。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
MenuItem item = menu.findItem(menuSearch);
SearchView searchView = (SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
当应用程序启动时,我需要我的 listView GONE 的可见性,当我在工具栏中按搜索时,listView 应该是可见的。
我必须对onOptionsItemSelected 做任何事情吗,
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == menuSearch) {
lv.setVisibility(View.VISIBLE);
return true;
}
return super.onOptionsItemSelected(item);
}
但我的代码不起作用...
main.xml...
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menuSearch"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always">
</item>
</menu>
【问题讨论】:
-
在列表视图中设置空文本视图,如果列表为空,它将显示空消息或无消息
-
我认为你应该把代码让列表视图在
onOptionsItemSelected中可见? -
@nabillondon,是的,我认为这对..但是我所做的没有工作..
-
@Simon 可能没有调用
onOptionsItemSelected,您的 searchview xml 定义中有app:showAsAction="always|collapseActionView"吗? -
做到了,但结果为负.. listview 仍然消失了...
标签: android listview visibility