Bom pessoal, na programação de um aplicativo existem várias funcionalidades, como podemos analisar nos códigos de posts mais antigos: Comunicação Bluetooth entre Arduino , Android Programação Bluetooth no Android e Android, Activities e como alternar entre várias telas. Notamos em alguns componentes para geração desses aplicativos suas estruturas de Layouts, TextView’s, Buttons. No Android são disponibilizadas diversas funcionalidades que ajudam na criação de um aplicativo interativo. Alguns outros componentes gráficos são: AlertDialog, Toast, Radio buttons, Spinners, Checkboxes, dentre outros.
Ao longo do meu estudo sobre a programação android me deparei com alguns desses componentes citados acima. Mas hoje me dedicarei a mostrar para vocês um componente, de um campo de texto, que quando o usuário está digitando uma informação, será mostrado sugestões em uma lista automaticamente. Nesse post irei demonstrar alguns aplicações do AutoCompleteTextView. Para essa aplicação foi utilizado o Android Studio 2.1. O post está dividido na seguintes temáticas:
1 – AutoCompleteTextView – Usando um vetor de string
Nessa aplicação irei demonstrar uma das maneiras mais simples da criação dessa funcionalidade, e também uma das maneiras que particularmente acho um pouco desorganizada, pois na criação de aplicativos geralmente é disponibilizado ao programador certas pastas para que possa organizar as funcionalidades do programa como arquivos: som, imagens, strings, outros códigos xml.
Mas vamos lá para ação, primeiramente a criação do aplicativo. Se você tiver alguma dúvida sobre como começar um aplicativo, confirar nosso post Usando Android Studio para criação de aplicativos, lá você poderá ter uma noção maior das hierarquia de diretórios de um projeto, é um conceito importante para entender tudo que será abordado aqui.
Sem mais delongas vamos lá, supondo que o projeto do aplicativo já está criado, ainda com código padrão (Hello Word). Vamos fazer a primeira alteração.
1.1 – Strings.xml
<resources> <string name="app_name"> DsC: Autocomplemento </string> <string name="logo_do_dragao">Logo do dragão</string> <string name="digitar_o_mes">Digite o Mês</string> </resources>
Essa parte é bem simples, ela apresenta as seguintes características:
-
-
app_name
: Nome que será atribuído ao aplicativo;logo_do_dragao
: Descrição de uma imagem colocada na activity (Coloquei para deixar o aplicativo bonitinho ;P);digitar_o_mes
: Um texto para o usuário visualizar antes de digitar a informação.
-
1.2 – Layout.xml
Bom pessoal, vamos agora editar a activity_main.xml
:
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: AutoCompleteTextView (Auto Complemento) --> <AutoCompleteTextView android:id="@+id/acTexto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" /> </RelativeLayout>
A imagem abaixo da uma melhor noção de como fica a estrutura do Layout e as informações colocadas na strings.xml
.
Figura 1 – Tela AutoCompleteTextView.
Parte da activity_main.xml
foi gerada automaticamente, quando o projeto foi criado. Então, não comentarei sobre essa parte do código. As partes que irei abordar aqui serão as que estão grifadas no Código 2. Vamos lá esclarecer todas as mudanças:
-
-
RelativeLayout
:android:background="#FF40CC38"
: Estrutura para mudar a cor de fundo da tela (Cor verde, como demonstrado na Figura 1);android:orientation="vertical"
: Especifica a direção do layout, nesse caso vertical.
-
ImageView
: Uma estrutura de imagemandroid:id="@+id/imageView"
:A identificação;android:layout_width="100dp"
: Tamanho da largura que ocupa na tela, com uma dimensão 100dp;android:layout_height="100dp"
: Tamanho da altura que ocupa na tela, com uma dimensão 100dp;android:src="@drawable/logo"
: Local onde se encontra o arquivo de imagem;android:contentDescription="@string/logo_do_dragao"
: Descrição da imagem;android:layout_centerHorizontal="true"
: Posição da imagem, nesse caso ela vai se posicionar no centro no sentido horizontal.
-
AutoCompleteTextView
: Estrutura do auto complementoandroid:id="@+id/acTexto"
: A identificação, importante para fazer a chamada no código java;android:layout_width="wrap_content"
: Tamanho da largura que ocupa na tela, se adapta automaticamente;android:layout_height="wrap_content"
: Tamanho da altura que ocupa na tela, se adapta automaticamente;android:hint="@string/digitar_o_mes"
: A string que vai se mostrada dentro da caixa de texto;android:layout_below="@+id/imageView"
: Posicionar a caixa de texto abaixo da imagem;android:layout_centerHorizontal="true"
: Posição da imagem, nesse caso ela vai se posicionar no centro no sentido horizontal.
-
1.3 – MainActivity.java
Agora para parte final do código onde a magia acontece:
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { //Criação de um vetor com todos os meses do ano. String MesesVetor[] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MesesVetor); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Figura 2 – Tela do aplicativo Autocomplemento.
Como foi mostrado secção anterior não irei abordar partes que são criadas automaticamente, irei abordar aqui serão as que estão grifadas no Código 3. Vamos lá esclarecer todas as mudanças:
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { //Criação de um vetor com todos os meses do ano. String MesesVetor[] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MesesVetor); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Essa foi a primeira mudança onde são adicionado duas bibliotecasas:
-
-
ArrayAdapter
: Onde você pode adicionar listas ou matrizes de objetos personalizados;AutoCompleteTextView
: Pacote onde você pode ativar a funcionalidade de autocomplemento.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { //Criação de um vetor com todos os meses do ano. String MesesVetor[] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MesesVetor); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Segunda parte adicionada:
-
-
MesesVetor
: Criação de um objeto vetor do tipo string, onde será atribuído a ele todos os meses do ano.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { //Criação de um vetor com todos os meses do ano. String MesesVetor[] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MesesVetor); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Terceira parte adicionada:
-
-
-
Simplesmente adicionar um ícone na parte superior do aplicativo, como podemos observar na imagem abaixo.
-
-
Figura 3 – Ícone do aplicativo Autocomplemento.
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { //Criação de um vetor com todos os meses do ano. String MesesVetor[] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MesesVetor); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Quarta parte adicionada:
-
-
- Essa parte já faz a ligação da
activity_main.xml
comMainActivity.java
através do Id do componete, pela funçãofindViewById
.
- Essa parte já faz a ligação da
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { //Criação de um vetor com todos os meses do ano. String MesesVetor[] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MesesVetor); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
A quinta parte e última, foi declarado a estrutura ArrayAdapter que tem seguintes características:
-
-
- Do tipo
string
; This
: Onde é aplicado a classe atual;R.layout.simple_list_item_1
: Tipo de layout para ser mostrado a lista;MesesVetor
: Vetor com as strings;
- Do tipo
-
Depois colocamos todas as configurações do objeto adapter
, na AutoCompleteTextView
através da função acObjText.setAdapter(adapter)
.
– Nota
Para maiores informações você pode consultar o código completo e comentado na nossa página do GitHub:
Código AutoCompleteTextView – Usando um vetor de string
2 – AutoCompleteTextView – Usando uma lista do arquivo string.xml
Bom pessoal, agora que já aprendemos uma forma de criar um aplicativo usando AutoCompleteTextView, vamos agora otimizar o código anterior. Como eu citei acima o android disponibiliza pastas e arquivos onde você pode organizar sua aplicação. Como todo o conteúdo de texto se encontra no arquivo strings.xml
. Então iremos colocar todas as informações dos meses do ano no arquivo strings.xml
.
2.1 – Strings.xml
<resources> <string name="app_name"> DsC: Autocomplemento </string> <string name="digitar_o_mes">Digite o Mês</string> <string name="logo_do_dragao">Logo do dragão</string> <string-array name="MesesLista"> <item>Janeiro</item> <item>Fevereiro</item> <item>Março</item> <item>Abril</item> <item>Maio</item> <item>Junho</item> <item>Julho</item> <item>Agosto</item> <item>Setembro</item> <item>Outubro</item> <item>Novembro</item> <item>Dezembro</item> </string-array> </resources>
-
-
MesesLista
: É o nome de um vetor de strings que contém todos os meses do ano.
-
2.2 – MainActivity.java
Bom vamos agora editar MainActivity.java,
pois o layout da activity_main.xml
vai ter a mesma configuração do código anterior. Vamos lá.
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import java.util.Arrays; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Variável da estrutura layout uma lista simples //(android.R.layout.simple_list_item_1) int tipoLayoutId = android.R.layout.simple_list_item_1; //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. List<String> MesesVetor = Arrays.asList(getResources().getStringArray(R.array.MesesLista)); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, tipoLayoutId, MesesVetor ); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Vamos agora esclarecer as mudanças. Na primeira adicionamos duas novas bibliotecas:
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import java.util.Arrays; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Variável da estrutura layout uma lista simples //(android.R.layout.simple_list_item_1) int tipoLayoutId = android.R.layout.simple_list_item_1; //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. List<String> MesesVetor = Arrays.asList(getResources().getStringArray(R.array.MesesLista)); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, tipoLayoutId, MesesVetor ); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
Array
: Esta classe contém vários métodos para a manipulação de matrizes e vetores;List
: Essa interface tem um controle preciso sobre onde na lista é inserida cada elemento. O usuário pode acessar os elementos pelo seu índice inteiro (posição na lista), e procurar elementos na lista.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import java.util.Arrays; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Variável da estrutura layout uma lista simples //(android.R.layout.simple_list_item_1) int tipoLayoutId = android.R.layout.simple_list_item_1; //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. List<String> MesesVetor = Arrays.asList(getResources().getStringArray(R.array.MesesLista)); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, tipoLayoutId, MesesVetor ); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
tipoLayoutId
: Uma simples variável onde será atribuído, o tipo de layout para ser mostrado a lista nesse casoR.layout.simple_list_item_1
;
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import java.util.Arrays; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Variável da estrutura layout uma lista simples //(android.R.layout.simple_list_item_1) int tipoLayoutId = android.R.layout.simple_list_item_1; //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. List<String> MesesVetor = Arrays.asList(getResources().getStringArray(R.array.MesesLista)); //Chamada da estrutura AutoCompleteTextView do Layout para um objeto. AutoCompleteTextView acObjText = (AutoCompleteTextView) findViewById(R.id.acTexto); // Criação de um ArrayAdapter, para que possa mostrar // a lista de sugestões para o usuário ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, tipoLayoutId, MesesVetor ); acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
MesesVetor
: Contém uma lista de strings dos meses do ano, isso atravês do vetor que está contido na variávelMesesLista
no arquivostrings.xml
;
-
– Nota
Para maiores informações você pode consultar o código completo e comentado na nossa página do GitHub:
Código AutoCompleteTextView – Usando uma lista do arquivo string.xml
3 – AutoCompleteTextView – Mudança na caixa de cores
Bom pessoal agora que mudamos a organização do texto, para melhorá na interação do código, que tal agora mudar um pouco as cores do aplicativo ? Vamos lá primeiramente selecionar umas cores para fundo, e uma cor para caixa de texto.
2.1 – Colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3f3f41</color> <color name="colorPrimaryDark">#000000</color> <color name="colorAccent">#913131</color> <color name="amber500">#FFC107</color> <!-- Configuração da cor âmbar --> <color name="ciano500">#00BCD4</color> <!-- Configuração da cor ciano --> </resources>
-
-
amber500
: Adiciona a estruturacolor
a cor âmbar;ciano500
: Adiciona a estruturacolor
a cor ciano.
-
2.2 – Styles.xml
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="Autocomplete" parent="Widget.AppCompat.Light.AutoCompleteTextView"> <item name="android:background">@color/amber500</item> <item name="colorControlActivated">@color/ciano500</item> </style> </resources>
-
-
Autocomplete
: Criar um estilo com as configurações:Widget.AppCompat.Light.AutoCompleteTextView
: Tema que será usado;android:background
: Configuração da cor de fundo do estilo;colorControlActivated
: Configuração da cor da caixa de texto do estilo.
-
3.3 – Layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: AutoCompleteTextView (Auto Complemento) --> <AutoCompleteTextView android:id="@+id/acTexto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:theme="@style/Autocomplete"/> </RelativeLayout> <!-- Fim do Layout -->
-
-
Autocomplete
: Essa parte é a declaração de tema que vamos adotar para o AutoCompleteTextView.
-
Na Figura abaixo podemos analisar o resultado dessas modificações:
Figura 4 – Ícone do aplicativo Autocomplemento.
– Nota
Para maiores informações você pode consultar o código completo e comentado na nossa página do GitHub:
Código AutoCompleteTextView – Mudança na caixa de cores
4 – AutoCompleteTextView – Com imagem, junto ao texto
Agora vamos implementar boa parte do código para que quando o usuário digite um texto ele mostra uma imagem do seu lado. Primeiramente vamos aos arquivos de imagens.
4.1 – Arquivo de imagens
No link abaixo você pode encontrar todas as imagens referente aos meses do ano, são imagens com as abreviações dos meses exemplo, janeiro: JAN.
Downloads do Repositório: Arquivos de imagens do projeto
Figura 4 – Ícone do mês de janeiro.
Depois do download das imagens, vamos colocar na pasta de onde está localizado o projeto, por exemplo no caminho abaixo:
D:\Android\Projects\PrjDragaoAutoCompleteTextView\app\src\main\res\drawable
Onde está o projeto do aplicativo você deve colocar todas as imagens dentro da pasta drawable
, para que possamos fazer a ligação no código em java. Depois quando você abrir o projeto no android studio podera notar a seguinte característica na imagem abaixo:
Figura 5 – Conteúde da pasta drawable.
4.2 – Activity_main.xml
Vamos agora fazer uma pequena edição na activity_main.xml
:
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: da ClassAutoCompleteTextView (Auto Complemento) --> <com.dragao.sem.chama.ClassAutoCompleteTextView android:id="@+id/acTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:theme="@style/Autocomplete" android:completionThreshold="2"/> <!-- Adicionando componente: TextView, visualizar um texto informativo sobre a seleção--> <TextView android:id="@+id/seleMes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/acTexto"/> </RelativeLayout> <!-- Fim do Layout -->
Vamos analisar as mudanças:
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: da ClassAutoCompleteTextView (Auto Complemento) --> <com.dragao.sem.chama.ClassAutoCompleteTextView android:id="@+id/acTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:theme="@style/Autocomplete" android:completionThreshold="2"/> <!-- Adicionando componente: TextView, visualizar um texto informativo sobre a seleção--> <TextView android:id="@+id/seleMes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/acTexto"/> </RelativeLayout> <!-- Fim do Layout -->
-
-
com.dragao.sem.chama.ClassAutoCompleteTextView
: Estrutura que vai está ligada ao uma classe java que vamos criar.
-
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: da ClassAutoCompleteTextView (Auto Complemento) --> <com.dragao.sem.chama.ClassAutoCompleteTextView android:id="@+id/acTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:theme="@style/Autocomplete" android:completionThreshold="2"/> <!-- Adicionando componente: TextView, visualizar um texto informativo sobre a seleção--> <TextView android:id="@+id/seleMes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/acTexto"/> </RelativeLayout> <!-- Fim do Layout -->
-
-
android:layout_width="match_parent"
: Mudamos a largura para ocupar toda a tela.
-
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: da ClassAutoCompleteTextView (Auto Complemento) --> <com.dragao.sem.chama.ClassAutoCompleteTextView android:id="@+id/acTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:theme="@style/Autocomplete" android:completionThreshold="2"/> <!-- Adicionando componente: TextView, visualizar um texto informativo sobre a seleção--> <TextView android:id="@+id/seleMes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/acTexto"/> </RelativeLayout> <!-- Fim do Layout -->
-
-
android:completionThreshold="2"
: Realiza a função de só ativar o complemento depois que for digitado dois caracteres.
-
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dragao.sem.chama.MainActivity" android:background="#FF40CC38" android:orientation="vertical"> <!-- Adicionando componente: ImageView, inserir uma imagem na activity --> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:contentDescription="@string/logo_do_dragao" android:layout_centerHorizontal="true"/> <!-- Adicionando componente: da ClassAutoCompleteTextView (Auto Complemento) --> <com.dragao.sem.chama.ClassAutoCompleteTextView android:id="@+id/acTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/digitar_o_mes" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:theme="@style/Autocomplete" android:completionThreshold="2"/> <!-- Adicionando componente: TextView, visualizar um texto informativo sobre a seleção--> <TextView android:id="@+id/seleMes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/acTexto"/> </RelativeLayout> <!-- Fim do Layout -->
-
-
TextView
:android:id="@+id/seleMes"
: A identificação, importante para fazer a chamada no código java;android:layout_width="wrap_content"
: Tamanho da largura que ocupa na tela, se adapta automaticamente;android:layout_height="wrap_content"
: Tamanho da altura que ocupa na tela, se adapta automaticamente;android:layout_centerHorizontal="true"
: Posição da texto, nesse caso ele vai se posicionar no centro no sentido horizontal.android:layout_below="@id/acTexto"
: Posicionar a mensagem de texto abaixo da caixa de texto;
-
4.3 – Autocomplete_layout.xml
Vamos criar um simples layout com o nome, autocomplete_layout ,para receber a imagem e texto do complemento.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <!-- Adicionando componente: Imagem, que vai está associada ao texto --> <ImageView android:id="@+id/imaViewMes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" /> <!-- Adicionando componente: TextView, visualizar um texto do AutoCompleteTextView--> <TextView android:id="@+id/mesTexto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dp" android:padding="10dp" /> </LinearLayout>
-
-
LinearLayout
:android:layout_width="match_parent"
: Tamanho da largura para ocupar toda a tela;android:layout_height="match_parent"
: Tamanho da altura para ocupar toda a tela;android:orientation="horizontal"
: Especifica a direção do layout, nesse caso horizontal.
-
ImageView
:android:id="@+id/imaViewMes"
: A identificação, importante para fazer a chamada no código java;android:layout_width="wrap_content"
: Tamanho da largura que ocupa na tela, se adapta automaticamente;android:layout_height="wrap_content"
: Tamanho da altura que ocupa na tela, se adapta automaticamente;android:padding="10dp"
: Empurra o conteúdo 10 posições da tela.
-
TextView
:android:id="@+id/mesTexto"
: A identificação, importante para fazer a chamada no código java;android:layout_width="wrap_content"
: Tamanho da largura que ocupa na tela, se adapta automaticamente;android:layout_height="wrap_content"
: Tamanho da altura que ocupa na tela, se adapta automaticamente;android:textSize="15dp"
: Tamanho do texto;android:padding="10dp"
: Empurra o conteúdo 10 posições da tela.
-
4.4 – ClassAutoCompleteTextView.java
Vamos criar uma classe para personalizar a estrutura AutoCompleteTextView. Como essa classe vai retornar o item que foi selecionado na caixa de texto, então básicamente ele completa o texto digitado, depois da seleção, além de fazer a ligação com a estrutura criada na activity_main.xml.
package com.dragao.sem.chama; import android.content.Context; import android.util.AttributeSet; import android.widget.AutoCompleteTextView; import java.util.HashMap; public class ClassAutoCompleteTextView extends AutoCompleteTextView { public ClassAutoCompleteTextView(Context context, AttributeSet attrs) { super(context, attrs); } //Retorna o nome do mês correspondente ao item selecionado protected CharSequence convertSelectionToString(Object selectedItem) { // Cada item na lista de sugestões AutoCompleteTextView é um hashmap objeto. HashMap<String, String> hm = (HashMap<String, String>) selectedItem; return hm.get("mestxt"); } }
4.5 – MainActivity.java
Vamos agora para estrutura principal.
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Criar uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Agora vamos analisar a estrutura do código.
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
Na primeira mudança adicionamos sete novas bibliotecas:
-
-
import android.view.View
: Da acesso as funções que podem ser usados para construir uma interface de usuário;import android.widget.AdapterView
: Da acesso as funções do adapter para ter também acesso as pacotesOnItemClickListener
;import android.widget.SimpleAdapter
: Da acesso as funções de uma lista de vetores;import android.widget.TextView
: Da acesso as funções de exibir o texto para o usuário.
import java.util.ArrayList
: Da acesso as funções implementadas na interface List, ArrayList fornece métodos para manipular o tamanho da matriz que é usada internamente para armazenar a lista;import java.util.HashMap
: Da acesso as funções de operações de mapas, sobre certas informações;import java.util.List
: Da acesso as funções que implementa todas as operações de lista.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
imagensMes
: É um vetor com todas as localizações das imagens dos mesês.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
objAqui
: Objeto que vai receber os nomes que serão atribuidos para estrutura Hashmap;
objPara
: Objeto que vai receber os endereços onde será colocado a imagem e texto com o mês.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
MesesVetor
: Vai receber todas as strings dos meses, que estão localizadas no arquivostrings.xml
.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Criar uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
armListMesIma
: Variável que vai ter como função de armazenar os locais da imagem e do texto em ordem.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
- Através dessa função, que tem o tamanho do vetor
imagensMes
, podemos, atribuir o endereço e o texto do mês ao uma lista que tem o nomearmListMesIma
.
- Através dessa função, que tem o tamanho do vetor
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
adapter
: Colocamos todas as configurações do objeto e conteúdos nessa variável.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
acObjTex
: Objeto que será da referência pela classeClassAutoCompleteTextView.java
e está ligado ao conteúdo do layoutactivity_main.xml
.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
- É o evento que realiza, a função de monstrar ao usuário, o texto que foi selecionado ao clicar.
-
package com.dragao.sem.chama; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { // Vetor de inteiros de onde estão localizadas as imagens int[] imagensMes = new int[]{ R.drawable.janeiro, R.drawable.fevereiro, R.drawable.marco, R.drawable.abril, R.drawable.maio, R.drawable.junho, R.drawable.julho, R.drawable.janeiro, R.drawable.agosto, R.drawable.setembro, R.drawable.novembro, R.drawable.dezembro, }; @Override protected void onCreate(Bundle savedInstanceState) { // Nomes do Hashmap String[] objAqui = { "imagensMes", "mestxt"}; // Ids da views de autocomplete_layout.xml int[] objPara = { R.id.imaViewMes,R.id.mesTexto}; //Colocar o ícone (ic_launcher) na action bar getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Criação de um vetor com todos os meses do ano, // usando os valores contido no arquivo strings.xml. String[] MesesVetor = getResources().getStringArray(R.array.MesesLista); // Cria uma variável lista para armazenar, o mês e sua imagem List<HashMap<String,String>> armListMesIma = new ArrayList<HashMap<String,String>>(); // Função para colocar em uma lista a associação da imagem com texto for(int i=0;i<imagensMes.length;i++){ HashMap<String, String> hm = new HashMap<String,String>(); hm.put("mestxt", MesesVetor[i]); hm.put("imagensMes", Integer.toString(imagensMes[i]) ); armListMesIma.add(hm); } // Criiando um adapter para armazenar cada um dos itens SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), armListMesIma, R.layout.autocomplete_layout, objAqui, objPara); //Obter uma referência para AutoCompleteTextView // personalizada do activity_main.xml arquivo de layout ClassAutoCompleteTextView acObjText = (ClassAutoCompleteTextView) findViewById(R.id.acTexto); //Definição do evento de click lista do autocompletetextview AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView<?> arg0, View arg1, int position, long id) { // Cada item no adapter é um objeto HashMap. // Essa instrução cria o objeto hashmap atualmente clicado HashMap<String,String> hm = (HashMap<String,String>)arg0.getAdapter().getItem(position); // Obtendo uma referência para o TextView // da activity_main arquivo de layout. TextView viewSelMes = (TextView) findViewById(R.id.seleMes) ; // Obtendo o mês da HashMap e definir em um o TextView. viewSelMes.setText("Mês selecionado: " + hm.get("mestxt")); } }; acObjText.setOnItemClickListener(itemClickListener); // Definir o adapter em uma lista. acObjText.setAdapter(adapter); } }// Fim da classe MainActivity
-
-
- Configurações finais para colocar as informações para ser visualizadas ao usuário.
-
Por fim podemos ver o resultado na imagem abaixo.
Figura 5 -Tela do aplicativo Autocomplemento.
– Nota
Para maiores informações você pode consultar o código completo e comentado na nossa página do GitHub:
Código AutoCompleteTextView – Com imagem, junto ao texto
– Referências:
-
-
- AutoCompleteTextView (Android);
- AutoCompleteTextView – (Luis G. Valle,2016);
- Livro: Android – Introdução ao Desenvolvimento de Aplicações ( Ricardo Queirós, 2013);
- Customizing AutoCompleteTextView to display images and text in the suggestion list using SimpleAdapter in Android – (George Mathew, 2012).
-
Obrigado ;)
Meu Deus cara, você é cearense, que bacana! Que bom descobrir assim alguém que escreva um blog de alta qualidade!
parabéns pelo conteúdo, em 2019 e isso ainda me ajudou, salvou meu semestre kkkk vou fazer uma doação em retribuição