Как добавить ActionBar
в ListActivity
и сделать в нем SearchWidget
, вернее выполнить поиск элементов по списку(как поиск в плей маркете)?
Код ListActivity:
public class MyListActivity extends ListActivity {
String data[] = new String[]{"Элемент1", "Элемент2", "Элемент3",
"Элемент4","Элемент5"};
int images[] = new int[]{R.drawable.image1, R.drawable.image2,
R.drawable.image3, R.drawable.image4, R.drawable.image5};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<HashMap<String, String>> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
HashMap<String, String> hm = new HashMap<>();
hm.put("keyText", data[i]);
hm.put("keyImage", Integer.toString(images[i]));
list.add(hm);
}
String[] from = {"keyImage", "keyText"};
int[] to = {R.id.image1, R.id.text1};
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item_list, from, to);
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
chooseActivity(position);
}
private void chooseActivity(int position) {
switch (position) {
case 0:
startActivity(new Intent(this, ActivityName.class));
break;
//...
}
}
}
Чтобы экшенбар появился в ListActivity
, в качестве темы приложения необходимо использовать одну из Holo или Material (для API21 и выше) тем с экшенбаром, например android:Theme.Holo
.
Создаем меню с виджетом поиска (res/menu/main_menu.xml):
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/search"
android:title="search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="collapseActionView|always"
android:actionViewClass="android.widget.SearchView" />
</menu>
в код активити добавляем метод обработки экшенбара и поиска:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
searchView.clearFocus();
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
объект adapter
выносим в поле класса, чтобы к нему имелся доступ в методе меню:
public class MainActivity extends ListActivity {
SimpleAdapter adapter;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new SimpleAdapter(this, list, R.layout.list_item, from, to);
...
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Все статьи про OAuth2, которые хоть как-то упоминают Standalone говорят лишь "перехватите как-нибудь код авторизации и отправьте POST запрос для получения...
Нужен простой игровой движок для JavaПринцип роботы должен быть как у Pygame - просто методы отрисовки и обработки столкновений, возможно работа...
Доброго времени сутокМо;но ли как-то в Selenium Webdriver реализовать метод поиска по jquery локаторам? Может быть есть подключаемая библиотека, или...