Exemplo de Tutorial do Android SearchView Usando DataBinding
Introdução
O Android SearchView é um poderoso widget que permite que os usuários pesquisem dados em seu aplicativo. É um componente versátil que pode ser usado em vários cenários, como pesquisar contatos, mensagens ou itens em uma lista.
Neste tutorial, vamos mostrar como implementar um SearchView usando DataBinding. O DataBinding é um recurso do Android que simplifica o desenvolvimento de aplicativos vinculando dados a layouts, eliminando a necessidade de código boilerplate pesado.
Seguindo este tutorial, você aprenderá a:
* Criar um layout personalizado para o SearchView
* Vincular o SearchView aos dados usando DataBinding
* Manipular consultas de pesquisa e exibir resultados
Criando o Layout Personalizado
O primeiro passo é criar um layout personalizado para o SearchView. Isso nos dará controle total sobre a aparência e o comportamento do SearchView.
Crie um novo arquivo de layout XML em res/layout/search_view_layout.xml
e adicione o seguinte código:
xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="searchViewModel"
type="br.com.example.androidsearchviewdatabinding.SearchViewModel" />
</data>
<androidx.appcompat.widget.SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:queryHint="@{searchViewModel.queryHint}"
android:imeOptions="actionSearch"
android:inputType="text"
android:iconifiedByDefault="false" />
</layout>
Este layout contém um único SearchView com seu ID definido como "search_view"
. Vinculamos o atributo queryHint
do SearchView à variável searchViewModel
em nosso código de vinculação de dados.
Vinculando o SearchView aos Dados
Em seguida, precisamos vincular o SearchView aos dados usando DataBinding. Isso nos permitirá observar alterações no modelo de dados e atualizar a IU de acordo.
Crie uma nova classe de vinculação de dados chamada SearchViewBinding
em pkg/databinding/search_view_binding.xml
:
xml
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<import type="android.view.View" />
<variable
name="searchViewModel"
type="br.com.example.androidsearchviewdatabinding.SearchViewModel" />
</data>
<androidx.appcompat.widget.SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:queryHint="@{searchViewModel.queryHint}"
android:imeOptions="actionSearch"
android:inputType="text"
android:iconifiedByDefault="false" />
</layout>
Este arquivo de vinculação de dados corresponde ao nosso layout personalizado e vincula o SearchView à variável searchViewModel
.
Manipulando Consultas de Pesquisa e Exibindo Resultados
Agora, precisamos manipular consultas de pesquisa e exibir os resultados. Para fazer isso, vamos criar uma classe de visualização para gerenciar a lógica de negócios.
Crie uma nova classe de visualização chamada SearchViewModel
em pkg/model/SearchViewModel.kt
:
kotlin
class SearchViewModel {
val queryHint: String = "Pesquisar..."
private val _query = MutableLiveData<String>()
val query: LiveData<String> = _query
fun onQueryTextChanged(query: String) {
_query.value = query
}
}
Esta classe de visualização contém um LiveData
observável para armazenar a consulta de pesquisa atual. Quando o usuário altera o texto no SearchView, chamamos o método onQueryTextChanged
para atualizar o valor LiveData
.
Implementação no Código
Por fim, precisamos implementar a vinculação de dados e a classe de visualização em nosso código:
kotlin
class MainActivity : AppCompatActivity() {
private lateinit var binding: SearchViewBinding
private val searchViewModel = SearchViewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.lifecycleOwner = this
binding.searchViewModel = searchViewModel
}
}
Neste código, inicializamos a vinculação de dados e vinculamos a classe de visualização ao layout. Isso nos permite observar alterações na consulta de pesquisa e atualizar a IU de acordo.
Conclusão
Este tutorial demonstrou como implementar um SearchView usando DataBinding no Android. O DataBinding simplifica bastante o desenvolvimento de aplicativos, reduzindo a necessidade de código boilerplate e tornando mais fácil a vinculação de dados a layouts.
Usando a abordagem descrita aqui, você pode criar SearchViews personalizados que se integram perfeitamente aos seus aplicativos, fornecendo aos usuários uma maneira conveniente de pesquisar e filtrar dados.
FAQs
1. O que é o Android SearchView?
O Android SearchView é um widget integrado que permite que os usuários pesquisem dados em um aplicativo.
2. O que é DataBinding?
O DataBinding é um recurso do Android que simplifica o desenvolvimento de aplicativos vinculando dados a layouts.
3. Por que devo usar DataBinding com o SearchView?
O DataBinding reduz a necessidade de código boilerplate pesado e torna mais fácil manter a IU sincronizada com os dados.
4. Como atualizo os resultados da pesquisa quando o usuário altera a consulta?
Você pode observar alterações na consulta de pesquisa usando um LiveData
observável na classe de visualização e atualizar a IU de acordo.
5. Como posso personalizar a aparência do SearchView?
Você pode personalizar a aparência do SearchView criando um layout personalizado e vinculando-o aos dados usando DataBinding.
6. O SearchView pode ser usado em uma variedade de cenários?
Sim, o SearchView pode ser usado para pesquisar contatos, mensagens, itens em uma lista e muito mais.
7. O DataBinding pode ser usado com outros componentes do Android?
Sim, o DataBinding pode ser usado com uma ampla gama de componentes do Android, incluindo RecyclerView, ListView e TextView.
8. Quais são os benefícios de usar o DataBinding?
O DataBinding reduz a necessidade de código boilerplate, torna mais fácil manter a IU sincronizada com os dados e melhora o desempenho do aplicativo.