android - 改变 listView 的可见性
android - change visibility of listView
我有一个以字符串形式显示国家/地区的列表视图。
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 的可见性消失,当我在工具栏中按搜索时,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>
试试这个
listview.visible = 假;
或者您可以更改列表视图属性..
找到可见并设置 false
如果你想将视图设置为不可见,你可以尝试:
lv.setVisibility(View.INVISIBLE);
或
lv.setVisibility(View.GONE);
对于你的情况,你可以在onCreate中将lv设置为不可见,
并将列表视图设置为在 onQueryTextSubmit 中可见。
@Override
public void onCreate() {
//... others
lv.setVisibility(View.INVISIBLE);
}
@Override
public boolean onQueryTextSubmit(String query) {
lv.setVisibility(View.VISIBLE);
return false;
}
关闭监听器的设置:
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
lv.setVisibility(View.GONE);
return false;
}
});
为您的 SearchView
使用 setOnSearchClickListener
@Override
public void onCreate() {
...
yourListView.setVisibility(View.GONE); // or use View.INVISIBLE
}
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SearchView searchView = (SearchView)item.getActionView();
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lv.setVisibility(View.VISIBLE);
}
});
}
添加:
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
lv.setVisibility(View.VISIBLE); return false;
}
});
在 onCreateOptionsMenu
我有一个以字符串形式显示国家/地区的列表视图。
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 的可见性消失,当我在工具栏中按搜索时,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>
试试这个 listview.visible = 假; 或者您可以更改列表视图属性.. 找到可见并设置 false
如果你想将视图设置为不可见,你可以尝试:
lv.setVisibility(View.INVISIBLE);
或
lv.setVisibility(View.GONE);
对于你的情况,你可以在onCreate中将lv设置为不可见, 并将列表视图设置为在 onQueryTextSubmit 中可见。
@Override
public void onCreate() {
//... others
lv.setVisibility(View.INVISIBLE);
}
@Override
public boolean onQueryTextSubmit(String query) {
lv.setVisibility(View.VISIBLE);
return false;
}
关闭监听器的设置:
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
lv.setVisibility(View.GONE);
return false;
}
});
为您的 SearchView
setOnSearchClickListener
@Override
public void onCreate() {
...
yourListView.setVisibility(View.GONE); // or use View.INVISIBLE
}
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SearchView searchView = (SearchView)item.getActionView();
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lv.setVisibility(View.VISIBLE);
}
});
}
添加:
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
lv.setVisibility(View.VISIBLE); return false;
}
});
在 onCreateOptionsMenu