<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CU8GRX0zeyp7ImA9WhRVFEs.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729</id><updated>2012-01-13T12:10:24.383-02:00</updated><category term="Mobile" /><category term="Windows Forms" /><category term="WebService" /><category term="SQL Server 2008" /><category term="Android" /><category term="WPF" /><category term=".NET" /><title>Programação Android e .Net</title><subtitle type="html">Artigos sobre programação com as linguagens Java e C#</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://romarconsultoria.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/RomarConsultoriaBlog" /><feedburner:info uri="romarconsultoriablog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>RomarConsultoriaBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CEcFR3k6fip7ImA9WhRXE0U.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-8515281032841918475</id><published>2011-12-14T10:49:00.001-02:00</published><updated>2011-12-20T09:53:36.716-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-20T09:53:36.716-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Usando SQLite em uma Aplicação .NET</title><content type="html">&lt;p&gt;A Base de Dados SQLite é conhecida por ser muito leve, rápida e por ser utilizada em várias aplicações que necessitam de uma base de dados confiável e robusta. Atualmente a base de dados SQLite é muito utilizada em dispositivos móveis como Android, Iphone e Ipad.&lt;/p&gt; &lt;p&gt;Antigamente para utilizar a base de dados SQLite em .NET era um pouco complicado, porque precisavamos utilizar as DLLs do SQLite através do PInvoke em .NET. Agora no site oficial do &lt;a href="http://sqlite.org/"&gt;SQLite&lt;/a&gt; foi inserida a biblioteca&amp;nbsp; &lt;a href="http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki"&gt;System.Data.SQLite&lt;/a&gt; para ser utilizada em aplicações .NET. &lt;/p&gt; &lt;p&gt;Para este post criei uma Aplicação Console para manipular as informações de uma base de dados de livros. Nesta aplicação o usuário poderá cadastrar, excluir, alterar e visualizar os livros existentes na base de dados.&lt;/p&gt; &lt;p&gt;Para utilizar a biblioteca do SQLite em .NET é necessário fazer o download da biblioteca e instalar na máquina de desenvolvimento. A biblioteca pode ser baixada no site oficial do &lt;a href="http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki"&gt;SQLite&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;No projeto Console no Visual Studio é necessário incluir uma referência à Dll &lt;strong&gt;System.Data.SQLite.dll&lt;/strong&gt;, que normalmente é instalada no diretório C:\Arquivos de Programas\System.Data.SQLite\2008\bin.&lt;/p&gt; &lt;p&gt;No projeto Console foi criada a classe &lt;strong&gt;SqliteDb&lt;/strong&gt; que possui os métodos para inserir, alterar e excluir dados da base SQLite,&amp;nbsp; a classe auxiliar &lt;strong&gt;Livro&lt;/strong&gt; (Listagem 1) que é utilizada para armazenar os dados do livro que está sendo utilizado pelos outros métodos e a classe &lt;strong&gt;Program&lt;/strong&gt; que possui o método &lt;strong&gt;Main&lt;/strong&gt; e outros métodos auxiliares para executar a aplicação.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Listagem 1:&lt;/strong&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Livro
    {
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; id { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; titulo { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; autor { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ano { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; genero { get; set; }
    }&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;A seguir são detalhados os métodos que fazem parte da classe &lt;strong&gt;SqliteDb&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Foram criadas duas constantes, uma para definir o nome da base de dados e a outra para definir a conexão com a base de dados SQLite.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; DATABASE_NAME = &lt;span class="str"&gt;"livros_classicos.db"&lt;/span&gt;;
        &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; CONNECTION = &lt;span class="str"&gt;"Data Source="&lt;/span&gt; + DATABASE_NAME;
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;O método &lt;strong&gt;CreateDatabase()&lt;/strong&gt; cria a base de dados &lt;em&gt;livros_classicos.db,&lt;/em&gt; se não existir e cria a tabela &lt;em&gt;livros&lt;/em&gt;:&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CreateDatabase()
        {
            SQLiteConnection conn = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteConnection(CONNECTION);
            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!File.Exists(DATABASE_NAME))
                {
                    SQLiteConnection.CreateFile(DATABASE_NAME);

                    &lt;span class="rem"&gt;// Cria a tabela livros&lt;/span&gt;
                    conn.Open();
                    SQLiteCommand cmd = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteCommand();
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = &lt;span class="str"&gt;"CREATE TABLE livros ("&lt;/span&gt; +
                        &lt;span class="str"&gt;"id INTEGER NOT NULL PRIMARY KEY,"&lt;/span&gt; + 
                        &lt;span class="str"&gt;"titulo TEXT,"&lt;/span&gt; + 
                        &lt;span class="str"&gt;"autor TEXT,"&lt;/span&gt; + 
                        &lt;span class="str"&gt;"ano_publicacao TEXT,"&lt;/span&gt; + 
                        &lt;span class="str"&gt;"genero TEXT)"&lt;/span&gt;;

                    cmd.ExecuteNonQuery();
                }
            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            &lt;span class="kwrd"&gt;finally&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (conn != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                {
                    conn.Close();
                }
            }
        }
&lt;/pre&gt;
&lt;p&gt;O método &lt;strong&gt;InsertLivro(Livro)&lt;/strong&gt; insere um livro na base: 
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; InsertLivro(Livro livro)
        {
            &lt;span class="kwrd"&gt;bool&lt;/span&gt; resultado = &lt;span class="kwrd"&gt;false&lt;/span&gt;;
            SQLiteConnection conn = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteConnection();

            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {
                conn.ConnectionString = CONNECTION;
                conn.Open();

                SQLiteCommand cmd = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Titulo"&lt;/span&gt;, livro.titulo);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Autor"&lt;/span&gt;, livro.autor);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Ano"&lt;/span&gt;, livro.ano);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Genero"&lt;/span&gt;, livro.genero);

                cmd.CommandText = &lt;span class="str"&gt;"INSERT INTO livros "&lt;/span&gt; +
                    &lt;span class="str"&gt;"(titulo, autor, ano_publicacao, genero) "&lt;/span&gt; +
                    &lt;span class="str"&gt;"VALUES (@Titulo, @Autor, @Ano, @Genero)"&lt;/span&gt;;

                &lt;span class="kwrd"&gt;int&lt;/span&gt; registro = cmd.ExecuteNonQuery();

                &lt;span class="rem"&gt;// Verifica se o registro foi inserido&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (registro == 1)
                {
                    resultado = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
                }

            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            &lt;span class="kwrd"&gt;finally&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (conn != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                {
                    conn.Close();
                }
            }
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;O método&lt;strong&gt; SearchLivro(string)&lt;/strong&gt; faz a procura de livros por título e retorna a lista de livros filtrados. Neste método optei em fazer uma busca utilizando o operador LIKE do SQL para fazer uma busca por padrão e não uma busca exata.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Livro&amp;gt; SearchLivro(&lt;span class="kwrd"&gt;string&lt;/span&gt; titulo)
        {
            List&amp;lt;Livro&amp;gt; livros = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Livro&amp;gt;();

            SQLiteConnection conn = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteConnection();

            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {
                conn.ConnectionString = CONNECTION;
                conn.Open();

                SQLiteCommand cmd = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Titulo"&lt;/span&gt;, titulo);

                cmd.CommandText = &lt;span class="str"&gt;"SELECT * FROM livros WHERE titulo LIKE '%"&lt;/span&gt;
                    + titulo + &lt;span class="str"&gt;"%'"&lt;/span&gt;;

                SQLiteDataReader reader = cmd.ExecuteReader();

                &lt;span class="kwrd"&gt;while&lt;/span&gt; (reader.Read() == &lt;span class="kwrd"&gt;true&lt;/span&gt;)
                {
                    Livro livro = &lt;span class="kwrd"&gt;new&lt;/span&gt; Livro();
                    livro.id = (&lt;span class="kwrd"&gt;long&lt;/span&gt;)reader[&lt;span class="str"&gt;"id"&lt;/span&gt;];
                    livro.titulo = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)reader[&lt;span class="str"&gt;"titulo"&lt;/span&gt;];
                    livro.autor = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)reader[&lt;span class="str"&gt;"autor"&lt;/span&gt;];
                    livro.ano = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)reader[&lt;span class="str"&gt;"ano_publicacao"&lt;/span&gt;];
                    livro.genero = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)reader[&lt;span class="str"&gt;"genero"&lt;/span&gt;];

                    livros.Add(livro);
                
                }

            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            &lt;span class="kwrd"&gt;finally&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (conn != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                {
                    conn.Close();
                }
            }

            &lt;span class="kwrd"&gt;return&lt;/span&gt; livros;
        }
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;O método &lt;strong&gt;UpdateLivro(Livro)&lt;/strong&gt; atualiza os dados do livro.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; UpdateLivro(Livro livro)
        {
            &lt;span class="kwrd"&gt;string&lt;/span&gt; resultado = &lt;span class="str"&gt;""&lt;/span&gt;;
            SQLiteConnection conn = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteConnection();

            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {

                conn.ConnectionString = CONNECTION;
                conn.Open();

                SQLiteCommand cmd = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Id"&lt;/span&gt;, livro.id);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Titulo"&lt;/span&gt;, livro.titulo);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Autor"&lt;/span&gt;, livro.autor);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Ano"&lt;/span&gt;, livro.ano);
                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Genero"&lt;/span&gt;, livro.genero);

                cmd.CommandText = &lt;span class="str"&gt;"UPDATE livros SET titulo=@Titulo, autor=@Autor,"&lt;/span&gt; +
                    &lt;span class="str"&gt;" ano_publicacao=@Ano, genero=@Genero WHERE id=@Id"&lt;/span&gt;;

                &lt;span class="kwrd"&gt;int&lt;/span&gt; registroAtualizado = cmd.ExecuteNonQuery();


                &lt;span class="kwrd"&gt;if&lt;/span&gt; (registroAtualizado == 1)
                {
                    resultado = &lt;span class="str"&gt;"O livro foi atualizado com sucesso."&lt;/span&gt;;
                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt;
                {
                    resultado = &lt;span class="str"&gt;"O livro não foi atualizado."&lt;/span&gt;;
                }
            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            &lt;span class="kwrd"&gt;finally&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (conn != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                {
                    conn.Close();
                }
            }

            &lt;span class="kwrd"&gt;return&lt;/span&gt; resultado;
        }
&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;O método &lt;strong&gt;DeleteLivro(string)&lt;/strong&gt; apaga o livro filtrado, na base de dados, através do id do livro.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; DeleteLivro(&lt;span class="kwrd"&gt;string&lt;/span&gt; id)
        {
            &lt;span class="kwrd"&gt;string&lt;/span&gt; resultado = &lt;span class="str"&gt;""&lt;/span&gt;;
            SQLiteConnection conn = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteConnection();

            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {
                conn.ConnectionString = CONNECTION;
                conn.Open();

                SQLiteCommand cmd = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLiteCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue(&lt;span class="str"&gt;"@Id"&lt;/span&gt;, id);

                cmd.CommandText = &lt;span class="str"&gt;"DELETE FROM livros WHERE id=@Id"&lt;/span&gt;;

                &lt;span class="kwrd"&gt;int&lt;/span&gt; registroAtualizado = cmd.ExecuteNonQuery();


                &lt;span class="kwrd"&gt;if&lt;/span&gt; (registroAtualizado == 1)
                {
                    resultado = &lt;span class="str"&gt;"O livro foi excluído com sucesso."&lt;/span&gt;;
                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt;
                {
                    resultado = &lt;span class="str"&gt;"O livro não foi excluído."&lt;/span&gt;;
                }
            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
            {
                resultado = ex.Message;
            }

            &lt;span class="kwrd"&gt;return&lt;/span&gt; resultado;
        }
    }
&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;A seguir são detalhados os métodos que fazem parte da classe &lt;strong&gt;Program&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;O método Main é o responsável pela inicialização e execução da aplicação:&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
            ConsoleKeyInfo key = &lt;span class="kwrd"&gt;new&lt;/span&gt; ConsoleKeyInfo();
            Console.WriteLine(&lt;span class="str"&gt;"Digite S a qualquer momento"&lt;/span&gt; +
                &lt;span class="str"&gt;" para sair da aplicação!"&lt;/span&gt;);

            SqliteDb sqlitedb = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqliteDb();

            &lt;span class="rem"&gt;// Cria a base de dados se não existir&lt;/span&gt;
            sqlitedb.CreateDatabase();

            &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;true&lt;/span&gt;)
            {
                Console.WriteLine(&lt;span class="str"&gt;"Digite I para incluir, A para alterar,"&lt;/span&gt; +
                    &lt;span class="str"&gt;" E para excluir, P para pesquisar e V para visualizar todos os livros:"&lt;/span&gt;);

                &lt;span class="rem"&gt;// Lê a tecla digitada&lt;/span&gt;
                key = Console.ReadKey(&lt;span class="kwrd"&gt;true&lt;/span&gt;);

                &lt;span class="rem"&gt;// Sai da aplicação&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (key.KeyChar == &lt;span class="str"&gt;'S'&lt;/span&gt; || key.KeyChar == &lt;span class="str"&gt;'s'&lt;/span&gt;)
                {                    
                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;
                }

                &lt;span class="rem"&gt;// Pesquisa um livro por título&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (key.KeyChar == &lt;span class="str"&gt;'P'&lt;/span&gt; || key.KeyChar == &lt;span class="str"&gt;'p'&lt;/span&gt;)
                {
                    Console.WriteLine(&lt;span class="str"&gt;"Digite o título do livro a ser pesquisado:"&lt;/span&gt;);
                    &lt;span class="kwrd"&gt;string&lt;/span&gt; titulo = Console.ReadLine();

                    &lt;span class="rem"&gt;// Exibe as informações do livro&lt;/span&gt;
                    BuscarLivro(titulo);
                }

                &lt;span class="rem"&gt;// Inclui um livro&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (key.KeyChar == &lt;span class="str"&gt;'I'&lt;/span&gt; || key.KeyChar == &lt;span class="str"&gt;'i'&lt;/span&gt;)
                {
                    &lt;span class="rem"&gt;// Lê as informações do livro a ser inserido&lt;/span&gt;
                    Livro livro = GetLivro();

                    &lt;span class="rem"&gt;// Insere o livro&lt;/span&gt;
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (sqlitedb.InsertLivro(livro) == &lt;span class="kwrd"&gt;true&lt;/span&gt;)
                    {
                        Console.WriteLine(&lt;span class="str"&gt;"O livro foi incluído com sucesso!"&lt;/span&gt;);
                    }
                }

                &lt;span class="rem"&gt;// Exclui um livro&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (key.KeyChar == &lt;span class="str"&gt;'E'&lt;/span&gt; || key.KeyChar == &lt;span class="str"&gt;'e'&lt;/span&gt;)
                {
                    Console.WriteLine(&lt;span class="str"&gt;"Digite o título do livro a ser excluído:"&lt;/span&gt;);
                    &lt;span class="kwrd"&gt;string&lt;/span&gt; titulo = Console.ReadLine();

                    &lt;span class="rem"&gt;// Buscar o livro&lt;/span&gt;
                    List&amp;lt;Livro&amp;gt; livros = BuscarLivro(titulo);

                    &lt;span class="rem"&gt;// Obtêm o Id do livro a ser excluído&lt;/span&gt;
                    &lt;span class="kwrd"&gt;string&lt;/span&gt; id = GetId(livros);

                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (id != &lt;span class="str"&gt;""&lt;/span&gt;)
                    {
                        &lt;span class="rem"&gt;// Exclui o livro&lt;/span&gt;
                        &lt;span class="kwrd"&gt;string&lt;/span&gt; resultado = sqlitedb.DeleteLivro(id);
                        Console.WriteLine(resultado);
                    }
                }

                &lt;span class="rem"&gt;// Altera um livro&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (key.KeyChar == &lt;span class="str"&gt;'A'&lt;/span&gt; || key.KeyChar == &lt;span class="str"&gt;'a'&lt;/span&gt;)
                {
                    Console.WriteLine(&lt;span class="str"&gt;"Digite o título do livro a ser alterado:"&lt;/span&gt;);
                    &lt;span class="kwrd"&gt;string&lt;/span&gt; titulo = Console.ReadLine();

                    &lt;span class="rem"&gt;// Buscar livro&lt;/span&gt;
                    List&amp;lt;Livro&amp;gt; livros = BuscarLivro(titulo);

                    &lt;span class="rem"&gt;// Obtêm o Id do livro a ser alterado&lt;/span&gt;
                    &lt;span class="kwrd"&gt;string&lt;/span&gt; id = GetId(livros);

                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (id != &lt;span class="str"&gt;""&lt;/span&gt;)
                    {
                        &lt;span class="rem"&gt;// Lê as novas informações do livro a ser alterado&lt;/span&gt;
                        Livro livro = GetLivro();

                        &lt;span class="rem"&gt;// Atualiza o valor do id&lt;/span&gt;
                        livro.id = &lt;span class="kwrd"&gt;long&lt;/span&gt;.Parse(id); ;

                        &lt;span class="rem"&gt;// Altera as informações do livro&lt;/span&gt;
                        &lt;span class="kwrd"&gt;string&lt;/span&gt; resultado = sqlitedb.UpdateLivro(livro);
                        Console.WriteLine(resultado);
                    }
                }
            }
        }
&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;O método possui um loop &lt;em&gt;while&lt;/em&gt; que apresenta um menu para que o usuário possa selecionar a função que deseja executar ou sair da aplicação. Quando a aplicação é executada é apresentado o seguinte menu:&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;Digite S a qualquer momento para sair da aplicação!&lt;br&gt;Digite I para incluir, A para alterar, E para excluir, P para pesquisar e V para&lt;br&gt;visualizar todos os livros:&lt;/font&gt; 
&lt;p&gt;Além do método &lt;strong&gt;Main&lt;/strong&gt; a classe &lt;strong&gt;Program&lt;/strong&gt; possui também os métodos &lt;strong&gt;BuscarLivro(string)&lt;/strong&gt;, &lt;strong&gt;GetId(List&amp;lt;Livro)&lt;/strong&gt; e &lt;strong&gt;GetLivro().&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;O método &lt;strong&gt;BuscarLivro(string)&lt;/strong&gt; faz a busca dos livros por título e retorna uma lista de livros.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;Livro&amp;gt; BuscarLivro(&lt;span class="kwrd"&gt;string&lt;/span&gt; titulo)
        {
            SqliteDb sqlitedb = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqliteDb();

            List&amp;lt;Livro&amp;gt; livros = sqlitedb.SearchLivro(titulo);
            Console.WriteLine();
            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Livro item &lt;span class="kwrd"&gt;in&lt;/span&gt; livros)
            {
                Console.WriteLine(item.id + &lt;span class="str"&gt;"\t"&lt;/span&gt; + item.titulo + &lt;span class="str"&gt;"\t"&lt;/span&gt; + item.autor + &lt;span class="str"&gt;"\t"&lt;/span&gt; +
                    item.ano + &lt;span class="str"&gt;"\t"&lt;/span&gt; + item.genero);
            }
            Console.WriteLine();

            &lt;span class="kwrd"&gt;return&lt;/span&gt; livros;
        }
&lt;/pre&gt;
&lt;p&gt;O método &lt;strong&gt;GetId(List&amp;lt;Livro&amp;gt; livros)&lt;/strong&gt; faz a busca dos livros e retorna o id do livro.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetId(List&amp;lt;Livro&amp;gt; livros)
        {
            &lt;span class="rem"&gt;// Digitar o id do livro a ser alterado se houver mais de &lt;/span&gt;
            &lt;span class="rem"&gt;// um livro como resultado&lt;/span&gt;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; id = &lt;span class="str"&gt;""&lt;/span&gt;;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (livros.Count == 0)
            {
                Console.WriteLine(&lt;span class="str"&gt;"O livro não foi encontrado."&lt;/span&gt;);
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (livros.Count == 1)
            {
                id = livros[0].id.ToString();
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
            {
                Console.WriteLine(&lt;span class="str"&gt;"Digite o id do livro a ser alterado:"&lt;/span&gt;);
                id = Console.ReadLine();
            }

            &lt;span class="kwrd"&gt;return&lt;/span&gt; id;
        }&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;O método &lt;strong&gt;GetLivro()&lt;/strong&gt; retorna um objeto livro com os detalhes do livro.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Livro GetLivro()
        {
            Livro livro = &lt;span class="kwrd"&gt;new&lt;/span&gt; Livro();
            Console.WriteLine(&lt;span class="str"&gt;"Digite o título do livro:"&lt;/span&gt;);
            livro.titulo = Console.ReadLine();
            Console.WriteLine(&lt;span class="str"&gt;"Digite o autor do livro:"&lt;/span&gt;);
            livro.autor = Console.ReadLine();
            Console.WriteLine(&lt;span class="str"&gt;"Digite o ano de publicação do livro:"&lt;/span&gt;);
            livro.ano = Console.ReadLine();
            Console.WriteLine(&lt;span class="str"&gt;"Digite o gênero do livro:"&lt;/span&gt;);
            livro.genero = Console.ReadLine();

            &lt;span class="kwrd"&gt;return&lt;/span&gt; livro;

        }&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-8515281032841918475?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hVD0RsQv67wB3AJ2GCifISd1O-g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hVD0RsQv67wB3AJ2GCifISd1O-g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hVD0RsQv67wB3AJ2GCifISd1O-g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hVD0RsQv67wB3AJ2GCifISd1O-g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/sQ-mLyjU9Vo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/8515281032841918475/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/12/usando-sqlite-em-uma-aplicacao-net.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/8515281032841918475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/8515281032841918475?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/sQ-mLyjU9Vo/usando-sqlite-em-uma-aplicacao-net.html" title="Usando SQLite em uma Aplicação .NET" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/12/usando-sqlite-em-uma-aplicacao-net.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHQXszeCp7ImA9WhRRF0k.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-7298684153336675182</id><published>2011-11-23T22:20:00.001-02:00</published><updated>2011-12-01T09:50:30.580-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T09:50:30.580-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Usando HttpURLConnection para Receber Dados no Android</title><content type="html">&lt;p&gt;No Android existem duas formas de enviar e receber dados usando HTTP. Uma é através do Apache HTTP e a outra através de HttpURLConnection.&lt;/p&gt; &lt;p&gt;No post &lt;a href="http://romarconsultoria.blogspot.com/2011/11/como-receber-dados-de-um-webservice-no.html"&gt;Como Receber Dados de um WebService no Android&lt;/a&gt; demonstrei como receber dados de um webservice utilizando o Apache HTTP (DefaultHttpClient).&lt;/p&gt; &lt;p&gt;Recentemente foi publicado no blog do google &lt;a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29"&gt;Android´s HTTP Clients&lt;/a&gt; um post informando que a API do Apache HTTP não está mais sendo atualizada, por ser muito grande e difícil de implementar melhorias sem quebrar as compatibilidades. Por esse motivo eles estão trabalhando na API HttpURLConnection.&lt;/p&gt; &lt;p&gt;A API HttpURLConnection é de uso geral, leve, de um tamanho pequeno e atende a maioria das aplicações.&lt;/p&gt; &lt;p&gt;Em dispositivos com a versão 2.2 (Froyo) ou anteriores a API HttpURLConnection tinha alguns bugs. Da versão 2.3 (Gingerbread) para frente esta API é melhor para o Android porque reduz o uso da rede, melhora a velocidade e economiza bateria.&lt;/p&gt; &lt;p&gt;Resumindo até a versão 2.2 (Froyo) é melhor utilizar o &lt;strong&gt;Apache HTTP,&lt;/strong&gt; para as versões 2.3 (Gingerbread) para frente é melhor utilizar a API &lt;strong&gt;HttpURLConnection&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Neste post vou utilizar o mesmo webservice e o mesmo projeto do post &lt;a href="http://romarconsultoria.blogspot.com/2011/11/como-receber-dados-de-um-webservice-no.html"&gt;Como Receber Dados de um webService no Android&lt;/a&gt; alterando somente a forma de receber os dados. Ao invés de utilizar a classe &lt;strong&gt;DefaultHttpClient&lt;/strong&gt; vou utilizar a classe &lt;strong&gt;HttpURLConnection&lt;/strong&gt;, portanto substituir a classe&lt;strong&gt; WebService.java&lt;/strong&gt; do post &lt;a href="http://romarconsultoria.blogspot.com/2011/11/como-receber-dados-de-um-webservice-no.html"&gt;Como Receber Dados de um webService no Android&lt;/a&gt; por:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Listagem 1:&lt;/strong&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebService {
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;int&lt;/span&gt; TAM_MAX_BUFFER = 10240; &lt;span class="rem"&gt;// 10Kbytes&lt;/span&gt;
    &lt;span class="kwrd"&gt;private&lt;/span&gt; String urlWebService;
    
    &lt;span class="kwrd"&gt;public&lt;/span&gt; WebService(String url) {
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.urlWebService = url;
    }
    
    &lt;span class="kwrd"&gt;public&lt;/span&gt; String getEstados(){
        String resultado = &lt;span class="str"&gt;""&lt;/span&gt;;
        HttpURLConnection urlConnection = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
        
        &lt;span class="kwrd"&gt;try&lt;/span&gt; {
          URL url = &lt;span class="kwrd"&gt;new&lt;/span&gt; URL(urlWebService);
          
          urlConnection = (HttpURLConnection) url.openConnection();
          urlConnection.setDoOutput(&lt;span class="kwrd"&gt;true&lt;/span&gt;);
          urlConnection.setRequestMethod(&lt;span class="str"&gt;"POST"&lt;/span&gt;);
          urlConnection.setRequestProperty(&lt;span class="str"&gt;"Content-Type"&lt;/span&gt;, 
                  &lt;span class="str"&gt;"text/xml; charset=utf-8"&lt;/span&gt;);
          urlConnection.setRequestProperty(&lt;span class="str"&gt;"SOAPAction"&lt;/span&gt;, 
                  &lt;span class="str"&gt;"http://tempuri.org/GetEstados"&lt;/span&gt;);
                    
          String request = &lt;span class="str"&gt;"&amp;lt;?xml version=\"1.0\" encoding=\"utf-8\"?&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;soap:Envelope "&lt;/span&gt; + 
                  &lt;span class="str"&gt;"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "&lt;/span&gt; +
                  &lt;span class="str"&gt;"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "&lt;/span&gt; +
                  &lt;span class="str"&gt;"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;soap:Body&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;GetEstadosResponse xmlns=\"http://tempuri.org/\"&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;GetEstadosResult&amp;gt;string&amp;lt;/GetEstadosResult&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;/GetEstadosResponse&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;/soap:Body&amp;gt;"&lt;/span&gt; +
              &lt;span class="str"&gt;"&amp;lt;/soap:Envelope&amp;gt;"&lt;/span&gt;;
          
          OutputStream &lt;span class="kwrd"&gt;out&lt;/span&gt; = urlConnection.getOutputStream();
          &lt;span class="kwrd"&gt;out&lt;/span&gt;.write(request.getBytes());
          
          &lt;span class="rem"&gt;// Verifica se a resposta está ok antes de solicitar os dados&lt;/span&gt;
          &lt;span class="kwrd"&gt;if&lt;/span&gt; (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
              InputStream &lt;span class="kwrd"&gt;in&lt;/span&gt; = &lt;span class="kwrd"&gt;new&lt;/span&gt; BufferedInputStream(
                      urlConnection.getInputStream());    
              
                BufferedReader reader = &lt;span class="kwrd"&gt;new&lt;/span&gt; BufferedReader(
                        &lt;span class="kwrd"&gt;new&lt;/span&gt; InputStreamReader(&lt;span class="kwrd"&gt;in&lt;/span&gt;,
                                &lt;span class="str"&gt;"UTF-8"&lt;/span&gt;), TAM_MAX_BUFFER);
                
                StringBuilder builder = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();
                
                &lt;span class="kwrd"&gt;for&lt;/span&gt; (String line = &lt;span class="kwrd"&gt;null&lt;/span&gt; ; (line = reader.readLine())!= &lt;span class="kwrd"&gt;null&lt;/span&gt;;) {
                    builder.append(line).append(&lt;span class="str"&gt;"\n"&lt;/span&gt;);
                }
                
                resultado = builder.toString();
                
                &lt;span class="rem"&gt;// Retira a string &amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt; &lt;/span&gt;
                &lt;span class="rem"&gt;// &amp;lt;string xmlns="http://tempuri.org/"&amp;gt; e a tag &amp;lt;/GetEstadosResult&amp;gt; &lt;/span&gt;
                &lt;span class="rem"&gt;// para obter o resultado em Json, já que o webservice está&lt;/span&gt;
                &lt;span class="rem"&gt;// retornando uma string&lt;/span&gt;
                Integer firstTagString = resultado.indexOf(&lt;span class="str"&gt;"&amp;lt;GetEstadosResult"&lt;/span&gt;);
                Integer posXml = resultado.indexOf(&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;, firstTagString);
                Integer posTagString = resultado.indexOf(&lt;span class="str"&gt;"&amp;lt;/GetEstadosResult&amp;gt;"&lt;/span&gt;);
                resultado = resultado.substring(posXml + 1, posTagString + 1);
          }
          &lt;span class="kwrd"&gt;else&lt;/span&gt;{
              Log.e(&lt;span class="str"&gt;"WebService"&lt;/span&gt;, 
                      &lt;span class="str"&gt;"ResponseCode: "&lt;/span&gt; + urlConnection.getResponseMessage());
          }

        }
        &lt;span class="kwrd"&gt;catch&lt;/span&gt;(IOException e){
            Log.e(&lt;span class="str"&gt;"WebService"&lt;/span&gt;, e.toString());
        }
        &lt;span class="kwrd"&gt;finally&lt;/span&gt; {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (urlConnection != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {
                urlConnection.disconnect();
            }
       }
        
        &lt;span class="kwrd"&gt;return&lt;/span&gt; resultado;
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No método &lt;strong&gt;getEstados()&lt;/strong&gt; é utilizada a classe &lt;strong&gt;HttpURLConnection&lt;/strong&gt; para obter os dados do webservice. Para utilizar esta classe é necessário configurar os métodos &lt;strong&gt;setDoOutput(Boolean)&lt;/strong&gt; que informa se este &lt;strong&gt;HttpURLConnection&lt;/strong&gt; permite output, no nosso caso deve ser setado como true, no método &lt;strong&gt;setRequestMethod(String)&lt;/strong&gt;, e &lt;strong&gt;setRequestProperty(String)&lt;/strong&gt; deve ser passado como parâmetro as informações do webservice. Depois é necessário montar a requisição do webservice e através da classe &lt;strong&gt;OutputStream&lt;/strong&gt; escrever os dados no &lt;strong&gt;HttpURLConnection&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Antes de ler os dados verificar através do método &lt;strong&gt;getResponseCode()&lt;/strong&gt; se a resposta do &lt;strong&gt;HttpURLConnection&lt;/strong&gt; está OK.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-7298684153336675182?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YtvEHDPux962dpZH97Oy9ocDLjs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YtvEHDPux962dpZH97Oy9ocDLjs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YtvEHDPux962dpZH97Oy9ocDLjs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YtvEHDPux962dpZH97Oy9ocDLjs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/dfqECHLi4dU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/7298684153336675182/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/11/usando-httpurlconnection-para-receber.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7298684153336675182?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7298684153336675182?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/dfqECHLi4dU/usando-httpurlconnection-para-receber.html" title="Usando HttpURLConnection para Receber Dados no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/11/usando-httpurlconnection-para-receber.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAARXwycSp7ImA9WhRRF0k.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-7475544541774291680</id><published>2011-11-03T10:41:00.000-02:00</published><updated>2011-12-01T09:59:04.299-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T09:59:04.299-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Como Receber Dados de um WebService no Android</title><content type="html">Neste post vou demonstrar como tratar informações vindas de um webservice desenvolvido em .NET em uma aplicação Android. &lt;br&gt;&lt;br&gt;O webservice utilizado nesta aplicação é o mesmo publicado no post &lt;a href="http://romarconsultoria.blogspot.com/2011/03/retornando-dados-em-json-com-webservice.html"&gt;Retornando Dados em Json com WebService .NET&lt;/a&gt;. Este WebService retorna a relação de estados do Brasil juntamente com as informações de área, capital e abreviação em formato Json. &lt;br&gt;&lt;br&gt;A aplicação Android vai receber as informações do webservice, tratar os dados e exibir&amp;nbsp; a relação de estados em um ListView. &lt;br&gt;&lt;br&gt;A aplicação possui duas classes &lt;b&gt;Principal.java&lt;/b&gt; e &lt;b&gt;WebService.java&lt;/b&gt;. Na classe &lt;b&gt;WebService.java&lt;/b&gt; foi criado o método &lt;b&gt;getEstados()&lt;/b&gt; que se conecta ao WebService e retorna os dados em uma String que contêm as informações formatas em Json. (Listagem 1). &lt;br&gt;&lt;br&gt;&lt;b&gt;Listagem 1:&lt;/b&gt; &lt;br&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebService {
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;int&lt;/span&gt; TIMEOUT_CONEXAO = 20000; &lt;span class="rem"&gt;// 20 segundos&lt;/span&gt;
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;int&lt;/span&gt; TIMEOUT_SOCKET = 30000; &lt;span class="rem"&gt;// 30 segundos&lt;/span&gt;
    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;int&lt;/span&gt; TAM_MAX_BUFFER = 10240; &lt;span class="rem"&gt;// 10Kbytes&lt;/span&gt;
    &lt;span class="kwrd"&gt;private&lt;/span&gt; String url;
    
    &lt;span class="kwrd"&gt;public&lt;/span&gt; WebService(String url) {
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.url = url;
    }
    
    &lt;span class="kwrd"&gt;public&lt;/span&gt; String getEstados(){
        String parserbuilder = &lt;span class="str"&gt;""&lt;/span&gt;;
        
        &lt;span class="kwrd"&gt;try&lt;/span&gt;{
            HttpParams httpParameters = &lt;span class="kwrd"&gt;new&lt;/span&gt; BasicHttpParams();
            
            &lt;span class="rem"&gt;// Configura o timeout da conexão em milisegundos até que a conexão&lt;/span&gt;
            &lt;span class="rem"&gt;// seja estabelecida&lt;/span&gt;
            HttpConnectionParams.setConnectionTimeout(httpParameters, 
                    TIMEOUT_CONEXAO);
            
            &lt;span class="rem"&gt;// Configura o timeout do socket em milisegundos do tempo &lt;/span&gt;
            &lt;span class="rem"&gt;// que será utilizado para aguardar os dados&lt;/span&gt;
            HttpConnectionParams.setSoTimeout(httpParameters, 
                    TIMEOUT_SOCKET);   
            
            HttpClient httpclient = &lt;span class="kwrd"&gt;new&lt;/span&gt; DefaultHttpClient(httpParameters);
            HttpPost httppost = &lt;span class="kwrd"&gt;new&lt;/span&gt; HttpPost(url + &lt;span class="str"&gt;"/GetEstados"&lt;/span&gt;);
    
            HttpResponse response = httpclient.execute(httppost);
            
            BufferedReader reader = &lt;span class="kwrd"&gt;new&lt;/span&gt; BufferedReader(
                    &lt;span class="kwrd"&gt;new&lt;/span&gt; InputStreamReader(response.getEntity().getContent(),
                            &lt;span class="str"&gt;"UTF-8"&lt;/span&gt;), TAM_MAX_BUFFER);
            
            StringBuilder builder = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();
            
            &lt;span class="kwrd"&gt;for&lt;/span&gt; (String line = &lt;span class="kwrd"&gt;null&lt;/span&gt; ; (line = reader.readLine())!= &lt;span class="kwrd"&gt;null&lt;/span&gt;;) {
                builder.append(line).append(&lt;span class="str"&gt;"\n"&lt;/span&gt;);
            }
            
            parserbuilder = builder.toString();
            
            &lt;span class="rem"&gt;// Retira a string &amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt; &lt;/span&gt;
            &lt;span class="rem"&gt;// &amp;lt;string xmlns="http://tempuri.org/"&amp;gt; e a tag &amp;lt;/string&amp;gt; &lt;/span&gt;
            &lt;span class="rem"&gt;// para obter o resultado em Json, já que o webservice está&lt;/span&gt;
            &lt;span class="rem"&gt;// retornando uma string&lt;/span&gt;
            Integer firstTagString = parserbuilder.indexOf(&lt;span class="str"&gt;"&amp;lt;string"&lt;/span&gt;);
            Integer posXml = parserbuilder.indexOf(&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;, firstTagString);
            Integer posTagString = parserbuilder.indexOf(&lt;span class="str"&gt;"&amp;lt;/string&amp;gt;"&lt;/span&gt;);
            parserbuilder = parserbuilder.substring(posXml + 1, posTagString + 1);
        
        }&lt;span class="kwrd"&gt;catch&lt;/span&gt;(ClientProtocolException e){
            Log.e(&lt;span class="str"&gt;"WebService"&lt;/span&gt;, e.toString());
        }
        &lt;span class="kwrd"&gt;catch&lt;/span&gt;(IOException e){
            Log.e(&lt;span class="str"&gt;"WebService"&lt;/span&gt;, e.toString());
        }
        
        &lt;span class="kwrd"&gt;return&lt;/span&gt; parserbuilder;    
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;br&gt;No método &lt;b&gt;getEstados()&lt;/b&gt; foi utilizada a classe &lt;b&gt;BasicHttpParams()&lt;/b&gt; para configurar os timeouts de conexão, e as classes &lt;b&gt;DefaultHttpClient(HttpParams) &lt;/b&gt;e&lt;b&gt; HttpPost(String)&lt;/b&gt; para fazer uma requisição tipo Post no WebService. &lt;br&gt;&lt;br&gt;A informação retornada pelo WebService .NET é um Xml que retorna uma String com dados no formato Json. Para facilitar a obtenção das informações no formato Json, optei em tratar a String retornada pelo WebService de modo a ter somente a informação no formato Json. &lt;br&gt;&lt;br&gt;Na classe &lt;b&gt;Principal.java&lt;/b&gt; no método &lt;b&gt;onCreate(Bundle)&lt;/b&gt; foi chamada a classe &lt;b&gt;WebService()&lt;/b&gt; e feito o tratamento para exibir os estados no ListView. (Listagem 2) &lt;br&gt;&lt;br&gt;&lt;b&gt;Listagem 2:&lt;/b&gt; &lt;br&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Principal extends ListActivity {
    &lt;span class="rem"&gt;/** Called when the activity is first created. */&lt;/span&gt;
    &lt;span class="preproc"&gt;@Override&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        List&amp;lt;String&amp;gt; estados = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList&amp;lt;String&amp;gt;();
        
        &lt;span class="rem"&gt;// o endereço http://localhost no emulador deve&lt;/span&gt;
        &lt;span class="rem"&gt;// se chamado como http://10.0.2.2, porque o&lt;/span&gt;
        &lt;span class="rem"&gt;// endereço http://localhost ou http://127.0.0.1&lt;/span&gt;
        &lt;span class="rem"&gt;// é utilizado pelo próprio emulador&lt;/span&gt;
        WebService webService = 
            &lt;span class="kwrd"&gt;new&lt;/span&gt; WebService(&lt;span class="str"&gt;"http://10.0.2.2:4362/websitejson/service.asmx"&lt;/span&gt;);
        
        &lt;span class="rem"&gt;// Obtêm a resposta do webservice&lt;/span&gt;
        String resultado = webService.getEstados();
        
        &lt;span class="kwrd"&gt;try&lt;/span&gt; {
            &lt;span class="rem"&gt;// Utiliza a classe JSONArray para obter as&lt;/span&gt;
            &lt;span class="rem"&gt;// informações e separar o campo que será&lt;/span&gt;
            &lt;span class="rem"&gt;// utilizado no listview&lt;/span&gt;
            JSONArray json = &lt;span class="kwrd"&gt;new&lt;/span&gt; JSONArray(resultado);
            
            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; json.length(); i++) {
                JSONObject jsonObj = json.getJSONObject(i);
                
                &lt;span class="rem"&gt;// Insere o estado na lista de estados&lt;/span&gt;
                estados.add(jsonObj.getString(&lt;span class="str"&gt;"Nome"&lt;/span&gt;));
            }
            
        } &lt;span class="kwrd"&gt;catch&lt;/span&gt; (JSONException e) {
            Log.e(&lt;span class="str"&gt;"WebService"&lt;/span&gt;, e.toString());
        }
        &lt;span class="kwrd"&gt;finally&lt;/span&gt;{
            setListAdapter(&lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayAdapter&amp;lt;String&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt;, 
                    android.R.layout.simple_list_item_1, estados));
        }
        
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;br&gt;O webservice está rodando no localhost (127.0.0.1) porta 4362, mas para chamar o webservice no emulador do android não pode ser utilizado o IP 127.0.0.1 porque este IP é utilizado no emulador, por isso na URL utilizar o IP 10.0.2.2. &lt;br&gt;&lt;br&gt;Para obter somente os estados utilizei as classe &lt;b&gt;JSONArray&lt;/b&gt; e &lt;b&gt;JSONObject&lt;/b&gt; para extrair a informação desejada.&amp;nbsp; &lt;br&gt;&lt;br&gt;Antes de rodar a aplicação não esquecer de dar permissão de acesso à internet no arquivo AndroidManifest.xml. &lt;br&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uses-permission&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;="android.permission.INTERNET"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uses-permission&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;br&gt;A aplicação rodando vai exibir a seguinte tela: &lt;br&gt;&lt;br&gt;&lt;a href="http://lh5.ggpht.com/-Fw2viiucuOU/TrRyutHS66I/AAAAAAAAANA/sFSin33jLVs/s1600-h/tela1%25255B3%25255D.png"&gt;&lt;img title="tela1" style="border-top-width: 0px; padding-right: 0px; display: block; padding-left: 0px; border-left-width: 0px; float: none; background-image: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; padding-top: 0px; border-right-width: 0px" height="484" alt="tela1" src="http://lh3.ggpht.com/-VRY16h6IBuk/TrRywSg9FnI/AAAAAAAAANI/HnY7UngmOuQ/tela1_thumb%25255B1%25255D.png?imgmax=800" width="324" border="0"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A API utilizada &lt;strong&gt;HttpDefaultClient&lt;/strong&gt; é melhor para dispositivos que utilizam a versão 2.2 (Froyo) ou anterior do Android. Para as versões 2.3 (Gingerbread) ou superior é melhor utilizar a API &lt;strong&gt;HttpURLConnection&lt;/strong&gt;. O post &lt;a href="http://romarconsultoria.blogspot.com/2011/11/usando-httpurlconnection-para-receber.html"&gt;Usando HttpURLConnection para Receber Dados no Android&lt;/a&gt; demonstra como utilizar esta API.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-7475544541774291680?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1o-QaxPU8GOQ0IKc9-Su1gxR_6Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1o-QaxPU8GOQ0IKc9-Su1gxR_6Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1o-QaxPU8GOQ0IKc9-Su1gxR_6Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1o-QaxPU8GOQ0IKc9-Su1gxR_6Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/gAcwSJpCjdw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/7475544541774291680/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/11/como-receber-dados-de-um-webservice-no.html#comment-form" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7475544541774291680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7475544541774291680?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/gAcwSJpCjdw/como-receber-dados-de-um-webservice-no.html" title="Como Receber Dados de um WebService no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-VRY16h6IBuk/TrRywSg9FnI/AAAAAAAAANI/HnY7UngmOuQ/s72-c/tela1_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/11/como-receber-dados-de-um-webservice-no.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QERnwzfip7ImA9WhdUFE8.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-5004800247391399330</id><published>2011-09-30T21:35:00.001-03:00</published><updated>2011-09-30T21:35:07.286-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T21:35:07.286-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Utilizando BroadcastReceiver para Iniciar uma Aplicação</title><content type="html">&lt;p&gt;Recentemente necessitei incluir em um projeto Android a possibilidade de fazer a aplicação ser inicializada logo após o boot do dispositivo.&lt;/p&gt;  &lt;p&gt;Para este post criei uma aplicação que faz uso da classe &lt;strong&gt;BroadcastReceiver&lt;/strong&gt; para iniciar uma Activity toda vez que o dispositivo faz um boot. &lt;/p&gt;  &lt;p&gt;No projeto criei duas classes&lt;strong&gt; Principal&lt;/strong&gt; e &lt;strong&gt;IniciarApp&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;A classe &lt;strong&gt;Principal&lt;/strong&gt; é a Activity que será exibida logo após o boot do dispositivo. Utilizei a Activity padrão que é criada pelo Eclipse quando criamos um projeto Android, e exibe a mensagem &lt;em&gt;Hello World, Principal!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A classe IniciarApp é a classe que é inicializada quando recebe a mensagem de Boot do sistema. (Listagem 1)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Listagem 1:&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; IniciarApp extends BroadcastReceiver {&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onReceive(Context ctx, Intent i) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Exibe a Activity Principal após o boot&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// do Android&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        Intent intent = &lt;span class="kwrd"&gt;new&lt;/span&gt; Intent(ctx, Principal.&lt;span class="kwrd"&gt;class&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);&lt;/pre&gt;

  &lt;pre&gt;        ctx.startActivity(intent);        &lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;A classe &lt;strong&gt;IniciarApp&lt;/strong&gt; estende a classe&lt;strong&gt; BroadcastReceiver&lt;/strong&gt;. O método &lt;strong&gt;onReceive(Context, Intent) &lt;/strong&gt;é chamado quando a aplicação recebe a mensagem de broadcast de boot do sistema. Neste método é declarada a intent que vai exibir a Activity Principal. Neste caso é necessário configurar o flag&lt;strong&gt; Intent.FLAG_ACTIVITY_NEW_TASK&lt;/strong&gt;, para que a aplicação seja inicializada como uma nova tarefa na pilha do stack das Activities.&lt;/p&gt;

&lt;p&gt;Para registrar um BroadcastReceiver podemos utilizar a API ou publicar o receiver no arquivo &lt;strong&gt;AndroidManifest.xml&lt;/strong&gt;. Neste caso é mais simples publicar pelo arquivo AndroidManifest.xml. (Listagem 2)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Listagem 2:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt; &lt;span class="rem"&gt;&amp;lt;!-- Permissão necessária para receber a mensagem de boot completado --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uses-permission&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.permission.RECEIVE_BOOT_COMPLETED&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     &lt;/pre&gt;

  &lt;pre&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;application&lt;/span&gt; &lt;span class="attr"&gt;android:icon&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@drawable/icon&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;android:label&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@string/app_name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt; &lt;/pre&gt;

  &lt;pre&gt;     &lt;span class="rem"&gt;&amp;lt;!-- Publicação do Broadcast --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;receiver&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.IniciarApp&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;intent-filter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;action&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.intent.action.BOOT_COMPLETED&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;category&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.intent.category.DEFAULT&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;intent-filter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;receiver&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt; &lt;/pre&gt;

  &lt;pre&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;activity&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.Principal&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;               &lt;span class="attr"&gt;android:label&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@string/app_name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;intent-filter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;action&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.intent.action.MAIN&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;category&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.intent.category.LAUNCHER&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;intent-filter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;activity&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;application&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No arquivo&lt;strong&gt; AndroidManifest.xml&lt;/strong&gt; foi incluída a tag de permissão do usuário para receber a mensagem de boot completado, e também foi incluída a tag &lt;strong&gt;&amp;lt;receiver&amp;gt;&lt;/strong&gt; que registra a classe &lt;strong&gt;IniciarApp&lt;/strong&gt; como a classe que vai ser chamada quando a mensagem de boot do sistema for recebida.&lt;/p&gt;

&lt;p&gt;Para testar, primeiro rode a aplicação uma vez no emulador para que o arquivo .apk da aplicação seja instalado, depois feche o emulador do Eclipse e abra novamente.&lt;/p&gt;

&lt;p&gt;Quando o emulador finalizar o boot a Activity &lt;strong&gt;Principal&lt;/strong&gt; será exibida apresentando a mensagem &lt;em&gt;Hello World, Principal!&lt;/em&gt; Pronto agora a aplicação será inicializada após cada boot do sistema. Após os testes não esqueça de desinstalar a aplicação, senão toda vez que o emulador for inicializado vai apresentar a Activity Principal.&lt;/p&gt;

&lt;p&gt;Uma observação importante é que esta utilização do BroadcastReceiver é muito particular e deve ser utilizada com cuidado, para que a experiência do usuário não seja prejudicada, porque desta forma a aplicação não segue o padrão das aplicações do Android.&lt;/p&gt;

&lt;p&gt;A utilização recomendada para o BroadcastReceiver é trabalhar em conjunto com a classe Service e Notification. O ideal é que o BroadcastReceiver inicie um serviço em background e informe o usuário utilizando as mensagens de notificação do dispositivo.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-5004800247391399330?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EbmIoN_w9hl8-naYykE_suRgxqc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EbmIoN_w9hl8-naYykE_suRgxqc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EbmIoN_w9hl8-naYykE_suRgxqc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EbmIoN_w9hl8-naYykE_suRgxqc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/lfSiE9dS3tk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/5004800247391399330/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/09/utilizando-broadcastreceiver-para.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/5004800247391399330?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/5004800247391399330?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/lfSiE9dS3tk/utilizando-broadcastreceiver-para.html" title="Utilizando BroadcastReceiver para Iniciar uma Aplicação" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/09/utilizando-broadcastreceiver-para.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4CRnwycCp7ImA9WhdWGUs.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-7707674634319931528</id><published>2011-09-13T22:49:00.001-03:00</published><updated>2011-09-13T22:49:27.298-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T22:49:27.298-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Touch Mode no Android</title><content type="html">&lt;p&gt;Neste post vou escrever sobre um assunto que achei bem interessante com relação ao que conhecemos como “foco”. É muito comum em aplicações desktop ter se a preocupação em tratar o posicionamento do “foco” nos controles de uma janela e tratar os eventos relacionados ao “foco”. No Android como existem diversos tipos de aparelhos que permitem uma navegação diferenciada de acordo com o hardware, torna-se necessário conhecer melhor como é o funcionamento do “foco” em aparelhos com tela touch screen, com trackball ou com teclado.&lt;/p&gt;  &lt;p&gt;O Android tem uma funcionalidade chamada de&lt;strong&gt; Touch Mode&lt;/strong&gt;. Esta funcionalidade foi criada para diferenciar a forma como um widget é exibido no momento em que é pressionado ou selecionado, seja com um clique através da tela touchscreen ou através do teclado ou um trackball.&lt;/p&gt;  &lt;p&gt;Quando um widget é selecionado através da tela touchscreen o Android entre automaticamente em modo &lt;strong&gt;Touch Mode&lt;/strong&gt; e fica neste modo até que uma tecla de navegação ou um trackball seja acionado, fazendo com que o Android saia do modo &lt;strong&gt;TouchMode&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Portanto o framework do Android reconhece automaticamente quando um widget é acionado através da tela touchscreen ou através do teclado. &lt;/p&gt;  &lt;p&gt;No caso em que o dispositivo esteja em &lt;strong&gt;Touch Mode&lt;/strong&gt; (quando o usuário utiliza a tela touchscreen) os widgets não apresentam o “foco”ou indicação de estarem selecionados. A exceção a esta regra são os widgets que possuem o atributo&lt;font face="Courier New"&gt; android:focusableinTouchMode&lt;/font&gt; setado como &lt;font face="Courier New"&gt;true&lt;/font&gt;, como por exemplo o&lt;strong&gt; EditText&lt;/strong&gt;, o &lt;strong&gt;ListView&lt;/strong&gt; quando está configurado para trabalhar com filtro. Neste caso o widget que permite a digitação de texto aparece com foco no local onde o texto vai ser inserido.&lt;/p&gt;  &lt;p&gt;Quando um widget é selecionado através da tela touch screen não existe uma dúvida de qual widget foi selecionado, por isso alguns widgets simplesmente respondem ao evento sem dar qualquer indicação na tela, por exemplo&lt;strong&gt; button&lt;/strong&gt;, &lt;strong&gt;checkbox&lt;/strong&gt;, &lt;strong&gt;radion button&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;No caso do usuário estar utilizando o teclado para navegar ou um trackball, os widgets recebem foco e permanecem selecionados para que fique visível o item selecionado.&lt;/p&gt;  &lt;p&gt;Uma situação que causa confusão é quando o usuário seleciona um widget através do teclado, este widget recebe foco, quando o usuário toca a tela, o widget perde o foco e só retorna a ter o foco quando a tecla de navegação é acionada novamente. Isto ocorre porque o dispositivo muda de modo de operação de &lt;strong&gt;Touch Mode&lt;/strong&gt; para não&lt;strong&gt; Touch Mode&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Para saber se a aplicação está em modo Touch Mode utilize o método&lt;strong&gt; isInTouchMode()&lt;/strong&gt; da classe View. &lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Courier New"&gt;View.isInTouchMode()&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Quando uma aplicação que possui um &lt;strong&gt;ListView&lt;/strong&gt; e está em modo &lt;strong&gt;Touch Mode&lt;/strong&gt; não é possível obter o item selecionado através do método &lt;strong&gt;ListView.getSelectedItemPosition()&lt;/strong&gt;. Neste caso o método vai retornar INVALID_POSITION. O método só vai retornar a posição do item selecionado se não estiver no modo&lt;strong&gt; Touch Mode&lt;/strong&gt;. Para resolver este problema utilize o click listener da View.&lt;/p&gt;  &lt;p&gt;No momento de desenvolver a interface de uma aplicação deve-se levar em consideração a utilização da aplicação e lembrar o padrão de funcionamento do framework. Não desenvolver a aplicação baseando-se em foco e seleção.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-7707674634319931528?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fOrvpvqh6dy7po8awrfFBOheRWA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fOrvpvqh6dy7po8awrfFBOheRWA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fOrvpvqh6dy7po8awrfFBOheRWA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fOrvpvqh6dy7po8awrfFBOheRWA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/XnehotSw3wM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/7707674634319931528/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/09/touch-mode-no-android.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7707674634319931528?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7707674634319931528?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/XnehotSw3wM/touch-mode-no-android.html" title="Touch Mode no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/09/touch-mode-no-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04DR3ozfCp7ImA9WhdXEUk.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-1396196906018521994</id><published>2011-08-23T22:39:00.001-03:00</published><updated>2011-08-23T22:39:36.484-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T22:39:36.484-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Customizando a Cor de Fundo de um Widget no Android</title><content type="html">&lt;p&gt;Neste post vou demonstrar como configurar a cor de fundo de um botão utilizando duas técnicas diferentes. Uma utilizando figuras com cor em degradê, para dar o efeito do botão sendo pressionado, e outra utilizando o mesmo efeito degradê só que, fazendo a configuração do botão utilizando um arquivo xml.&lt;/p&gt;  &lt;p&gt;Para este exemplo criei um projeto com dois botões com cor em degradê como demonstrado na Figura 1.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-SOuDNaemKow/TlRWVIyDlWI/AAAAAAAAAKQ/zHELJC1LVHQ/s1600-h/background1%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="background1" border="0" alt="background1" src="http://lh5.ggpht.com/-nrI8K8wqhU4/TlRWVqpOmrI/AAAAAAAAAKU/h-38eyzWjTM/background1_thumb%25255B9%25255D.png?imgmax=800" width="324" height="489" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figura 1&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Para montar o layout dois dois botões foi utilizado o seguinte código no arquivo &lt;strong&gt;main.xml&lt;/strong&gt; (Listagem 1):&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;Listagem 1:&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RelativeLayout&lt;/span&gt; &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="attr"&gt;android:orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;vertical&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;&amp;lt;!-- View utilizada como separador --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;View&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10sp&amp;quot;&lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/view1&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/btnJpg&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;200dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_centerHorizontal&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_below&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/view1&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Design por Figura Jpg&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:background&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@drawable/botao_azul_selector&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;&amp;lt;!-- View utilizada como separador --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;View&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10sp&amp;quot;&lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/view2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_below&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/btnJpg&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/btnXml&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;200dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_centerHorizontal&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_below&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/view2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Design por Arquivo Xml&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:background&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@drawable/botao_verde_selector&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RelativeLayout&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p align="left"&gt;No primeiro botão&lt;strong&gt; btnJpg&lt;/strong&gt; foi utilizado como cor de fundo duas figuras em degradê uma para quando o botão for pressionado e outra para quando o botão for solto. É necessário utilizar duas figuras para dar o efeito dinâmico do botão estar sendo pressionado.&lt;/p&gt;

&lt;p align="left"&gt;Para configurar este efeito utilizei um recurso chamado de&lt;em&gt; StateListDrawable&lt;/em&gt; que é um arquivo xml onde podemos configurar figuras diferentes para cada estado, por exemplo de um botão.&lt;/p&gt;

&lt;p align="left"&gt;Este arquivo xml deve ser colocado em um diretório \drawable. O arquivo para configurar o primeiro botão é o&lt;strong&gt; botão_azul_selector&lt;/strong&gt; (Listagem 2), configurado no atributo &lt;font face="Courier New"&gt;android:background=&amp;quot;@drawable/botao_azul_selector&amp;quot;.&lt;/font&gt;&lt;/p&gt;

&lt;p align="left"&gt;&lt;strong&gt;Listagem 2:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;selector&lt;/span&gt; &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;         &lt;span class="attr"&gt;android:state_pressed&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:drawable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@drawable/botao_azul_on&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:drawable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@drawable/botao_azul_off&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;selector&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No estado&lt;strong&gt; android:state_pressed&lt;/strong&gt; foi utilizada a figura &lt;strong&gt;botao_azul_on&lt;/strong&gt; para representar o botão quando pressionado e a figura&lt;strong&gt; botao_azul_off&lt;/strong&gt; para representar o botão no estado não pressionado. As figuras do botão devem estar em um diretório \drawable.&lt;/p&gt;

&lt;p&gt;No segundo botão &lt;strong&gt;btnXml&lt;/strong&gt; foi utilizada uma outra técnica de configurar a cor de fundo do botão. O princípio é o mesmo, foi utilizado um arquivo Xml para configurar a aparência do botão em cada um dos estados (pressionado ou não), só que desta vez ao invés de utilizar figuras .jpg, foram utilizadas tags para construir a forma geométrica do botão. O arquivo &lt;strong&gt;botao_verde_selector&lt;/strong&gt; também deve ser colocado em um diretório \drawable (Listagem 3):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Listagem 3:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;selector&lt;/span&gt; &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt; &lt;span class="attr"&gt;android:state_pressed&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;shape&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;gradient&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:startColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/verde_claro&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:endColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/verde_escuro&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:angle&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;270&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;stroke&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/verde_escuro&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;corners&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:radius&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;padding&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:right&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:bottom&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;shape&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;shape&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;gradient&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:startColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/verde_escuro&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:endColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/verde_claro&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:angle&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;270&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;stroke&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/verde_escuro&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;corners&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:radius&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;padding&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="attr"&gt;android:right&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="attr"&gt;android:bottom&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10dp&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;shape&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;selector&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;A aparência do botão verde é construída através da tag de forma&lt;strong&gt; &amp;lt;shape&amp;gt;&lt;/strong&gt; cujo default é o retângulo. Dentro desta tag temos a tag &lt;strong&gt;&amp;lt;gradient&amp;gt;&lt;/strong&gt; que define a cor degradê, a tag &lt;strong&gt;&amp;lt;stroke&amp;gt;&lt;/strong&gt; que define a largura e a cor do contorno do botão, a tag &lt;strong&gt;&amp;lt;corners&amp;gt;&lt;/strong&gt; que define o ângulo da borda arredondada do nosso botão e a tag &lt;strong&gt;&amp;lt;padding&amp;gt;&lt;/strong&gt; que define o posicionamento do conteúdo e não da forma geométrica do botão.&lt;/p&gt;

&lt;p&gt;Observe que foram criadas duas tags&lt;strong&gt; &amp;lt;item&amp;gt;&lt;/strong&gt;, uma para o estado pressionado do botão e outra para o estado default do botão.&lt;/p&gt;

&lt;p&gt;Para rodar a aplicação foi criada a Activity &lt;strong&gt;Principal&lt;/strong&gt; (Listagem 4):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Listagem 4:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Principal extends Activity {&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre&gt;        setContentView(R.layout.main);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-1396196906018521994?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jf6iM07uRC6WUlDbptgggDX-wn4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jf6iM07uRC6WUlDbptgggDX-wn4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jf6iM07uRC6WUlDbptgggDX-wn4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jf6iM07uRC6WUlDbptgggDX-wn4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/gsIjwf1GfoE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/1396196906018521994/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/08/customizando-cor-de-fundo-de-um-widget.html#comment-form" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/1396196906018521994?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/1396196906018521994?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/gsIjwf1GfoE/customizando-cor-de-fundo-de-um-widget.html" title="Customizando a Cor de Fundo de um Widget no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-nrI8K8wqhU4/TlRWVqpOmrI/AAAAAAAAAKU/h-38eyzWjTM/s72-c/background1_thumb%25255B9%25255D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/08/customizando-cor-de-fundo-de-um-widget.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHQHo5eip7ImA9WhdQFEg.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-841695343597409742</id><published>2011-08-15T21:58:00.001-03:00</published><updated>2011-08-15T21:58:51.422-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-15T21:58:51.422-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Configurar o Atributo MaxLength Programaticamente no Android</title><content type="html">&lt;p&gt;No Android os atributos utilizados no arquivo xml do layout podem ser programados também no código através de métodos. No caso do atributo&lt;strong&gt; android:maxLength&lt;/strong&gt; a programação via código não é tão direta como para os outros atributos. &lt;/p&gt;  &lt;p&gt;Para demonstrar como configurar o número máximo de texto em um widget &lt;strong&gt;EditText&lt;/strong&gt; criei um arquivo de layout xml com dois campos &lt;strong&gt;EditText&lt;/strong&gt;. No primeiro campo &lt;strong&gt;editMax1&lt;/strong&gt; foi configurado número máximo de texto como 10 (Listagem 1).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Listagem 1&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinearLayout&lt;/span&gt; &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="attr"&gt;android:orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;vertical&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EditText&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/editMax1&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EditText&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/editMax2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LinearLayout&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Para o segundo campo &lt;strong&gt;editMax2&lt;/strong&gt; vamos configurar o comprimento máximo do texto programaticamente (Listagem 2).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Listagem 2&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Main extends Activity {&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;int&lt;/span&gt; MAX_LENGTH = 10;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        setContentView(R.layout.main);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        EditText edit2 = (EditText)findViewById(R.id.editMax2);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Define o número máximo de caracteres do campo &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// em 10 caracteres programaticamente&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        edit2.setFilters(&lt;span class="kwrd"&gt;new&lt;/span&gt; InputFilter[]&lt;/pre&gt;

  &lt;pre&gt;             {&lt;span class="kwrd"&gt;new&lt;/span&gt; InputFilter.LengthFilter(MAX_LENGTH)});&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No método&lt;strong&gt; onCreate(Bundle)&lt;/strong&gt; foi criada a variável&lt;strong&gt; edit2&lt;/strong&gt; que representa o segundo campo &lt;strong&gt;editMax2&lt;/strong&gt; do arquivo xml de layout.&lt;/p&gt;

&lt;p&gt;Para configurar o número máximo de texto foi utilizado o método &lt;strong&gt;setFilters(InputFilter)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Portanto os dois campos EditText estão limitados em no máximo 10 caracteres, o primeiro via arquivo xml e configuração de atributo e o segundo programaticamente. Executando a aplicação teremos os dois campos exatamente com o mesmo comportamento.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-841695343597409742?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/doCbeTPEI4a8pxz6ZguOqQAEWKo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/doCbeTPEI4a8pxz6ZguOqQAEWKo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/doCbeTPEI4a8pxz6ZguOqQAEWKo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/doCbeTPEI4a8pxz6ZguOqQAEWKo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/LIJsDMrEEFM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/841695343597409742/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/08/configurar-o-atributo-maxlength.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/841695343597409742?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/841695343597409742?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/LIJsDMrEEFM/configurar-o-atributo-maxlength.html" title="Configurar o Atributo MaxLength Programaticamente no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/08/configurar-o-atributo-maxlength.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUCQnY5eip7ImA9WhdRGUk.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-1773942612208096383</id><published>2011-08-09T23:11:00.001-03:00</published><updated>2011-08-09T23:11:03.822-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-09T23:11:03.822-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Utilizando o ListView para Selecionar Vários Itens no Android</title><content type="html">&lt;p&gt;Neste post vou demonstrar como trabalhar com um ListView que permite a seleção de um ou vários itens, e como tratar o retorno dos itens selecionados.&lt;/p&gt;  &lt;p&gt;Criei um projeto onde são exibidas as regiões do Brasil (Figura 1) na Activity principal e quando selecionada uma região é apresentada uma Activity filha (Figura 2) com a relação de estados pertencentes àquela região, com um checkbox que permite a seleção ou não de cada estado (Figura 2).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-q7Mi-FqP8yM/TkHormrTi8I/AAAAAAAAAKA/at_lnS_CuC8/s1600-h/listviewmultiplechoice4%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="listviewmultiplechoice4" border="0" alt="listviewmultiplechoice4" src="http://lh4.ggpht.com/-yGGmNIbM_Qk/TkHosdDVLTI/AAAAAAAAAKE/NRBwgQgdox8/listviewmultiplechoice4_thumb%25255B8%25255D.png?imgmax=800" width="612" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quando são selecionados um ou mais estados na Activity filha (Tela com a relação dos estados da região selecionada – Figura 2) e retornamos para a Activity principal (Figura 1) é apresentada uma mensagem com os estados que foram selecionados (Figura 3). No exemplo foi selecionada a região Sudeste na Activity Principal e os estados Minas Gerais, Rio de Janeiro e São Paulo.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/-XDhP_Ofdrjs/TkHosqX3MSI/AAAAAAAAAKI/vfzzuN_umRU/s1600-h/listviewmultiplechoice5%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="listviewmultiplechoice5" border="0" alt="listviewmultiplechoice5" src="http://lh5.ggpht.com/-ORn0N3iSyiQ/TkHotSvOBhI/AAAAAAAAAKM/6q7wjJHr-O8/listviewmultiplechoice5_thumb%25255B2%25255D.png?imgmax=800" width="301" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No projeto foram criadas duas classes para representar as duas Activities. A primeira classe é a &lt;strong&gt;Main.java&lt;/strong&gt; (Listagem 1)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Listagem 1&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Main extends ListActivity implements OnItemClickListener {&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String[] regiao = &lt;span class="kwrd"&gt;new&lt;/span&gt; String[]{&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="str"&gt;&amp;quot;Centro-Oeste&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Nordeste&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Norte&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="str"&gt;&amp;quot;Sudeste&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sul&amp;quot;&lt;/span&gt;};&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; final &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; ACTIVITY_STATE = 1;&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;        setListAdapter(&lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayAdapter&amp;lt;String&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;                android.R.layout.simple_list_item_1, regiao));&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        ListView listView = getListView();        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        listView.setOnItemClickListener(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onItemClick(AdapterView&amp;lt;?&amp;gt; parent, View view, &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; position, &lt;span class="kwrd"&gt;long&lt;/span&gt; id) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        String regiao = (String) parent.getItemAtPosition(position);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        Intent intent = &lt;span class="kwrd"&gt;new&lt;/span&gt; Intent(&lt;span class="kwrd"&gt;this&lt;/span&gt;, StateListActivity.&lt;span class="kwrd"&gt;class&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;        intent.putExtra(&lt;span class="str"&gt;&amp;quot;estados&amp;quot;&lt;/span&gt;, getEstados(regiao));        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        startActivityForResult(intent, ACTIVITY_STATE);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onActivityResult(&lt;span class="kwrd"&gt;int&lt;/span&gt; requestCode, &lt;span class="kwrd"&gt;int&lt;/span&gt; resultCode, Intent data) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        super.onActivityResult(requestCode, resultCode, data);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Verifica se o retorno veio da Activity chamada&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (requestCode == ACTIVITY_STATE) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (resultCode == RESULT_OK) {&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (data != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    ArrayList&amp;lt;String&amp;gt; estados = data.getStringArrayListExtra(&lt;span class="str"&gt;&amp;quot;estados&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;                    &lt;/pre&gt;

  &lt;pre class="alt"&gt;                    StringBuilder message = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;

  &lt;pre&gt;                    message.append(&lt;span class="str"&gt;&amp;quot;Estados selecionados:\n&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; estados.size(); i++) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                            message.append(estados.get(i) + &lt;span class="str"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;                    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="rem"&gt;// Exibe o nome dos estados selecionados&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    Toast.makeText(&lt;span class="kwrd"&gt;this&lt;/span&gt;, message.toString(), Toast.LENGTH_SHORT).show();&lt;/pre&gt;

  &lt;pre&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;            }&lt;/pre&gt;

  &lt;pre&gt;        }                &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String[] getEstados(String regiao){&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (regiao.equals(&lt;span class="str"&gt;&amp;quot;Centro-Oeste&amp;quot;&lt;/span&gt;)) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; String[]{&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="str"&gt;&amp;quot;Goiás&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Mato Grosso&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Mato Grosso do Sul&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="str"&gt;&amp;quot;Distrito Federal&amp;quot;&lt;/span&gt;};&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (regiao.equals(&lt;span class="str"&gt;&amp;quot;Nordeste&amp;quot;&lt;/span&gt;)) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; String[]{&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="str"&gt;&amp;quot;Maranhão&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Piauí&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Ceará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio Grande do Norte&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="str"&gt;&amp;quot;Paraíba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Pernambuco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Alagoas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sergipe&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="str"&gt;&amp;quot;Bahia&lt;/span&gt;};&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (regiao.equals(&lt;span class="str"&gt;&amp;quot;Norte&amp;quot;&lt;/span&gt;)) {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; String[]{&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="str"&gt;&amp;quot;Acre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Amazonas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Roraima&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rondônia&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="str"&gt;&amp;quot;Pará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Amapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Tocantins&amp;quot;&lt;/span&gt;};&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (regiao.equals(&lt;span class="str"&gt;&amp;quot;Sudeste&amp;quot;&lt;/span&gt;)) {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; String[]{&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="str"&gt;&amp;quot;Minas Gerais&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Espírito Santo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;};&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (regiao.equals(&lt;span class="str"&gt;&amp;quot;Sul&amp;quot;&lt;/span&gt;)) {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; String[]{&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="str"&gt;&amp;quot;Paraná&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Santa Catarina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio Grande do Sul&amp;quot;&lt;/span&gt;};&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; String[] { &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; };&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;A classe &lt;strong&gt;Main.java &lt;/strong&gt;constroi a tela Principal e trata o retorno dos dados recebidos da Tela dos Estados.&lt;/p&gt;

&lt;p&gt;O método&lt;strong&gt; onCreate(Bundle)&lt;/strong&gt; cria um ListView com o layout padrão do Android (&lt;font face="Courier New"&gt;android.R.layout.simple_list_item_1&lt;/font&gt;) com os dados obtidos da matriz &lt;strong&gt;regiao&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O método &lt;strong&gt;onItemClick(AdapterView&amp;lt;?&amp;gt;, View, int, long)&lt;/strong&gt; é chamado quando uma região é selecionada no ListView. Neste método é armazenada a região selecionada na variável local&lt;strong&gt; regiao&lt;/strong&gt; e a Activity dos Estados é exibida através da chamada do método &lt;strong&gt;startActivityForResult(intent, int)&lt;/strong&gt; que exibe a Activity e aguarda o resultado dos estados selecionados quando a Activity chamada retornar para a Activity principal. 

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;O método&lt;strong&gt; onActivityResult(int, int, Intent)&lt;/strong&gt; é chamado quando a Activity de Estados retorna para a Activity Principal. Este método verifica se a Activity que retornou era a Activity esperada através da verificação do parâmetro &lt;strong&gt;requestCode&lt;/strong&gt;, verifica se o resultado está correto através do parâmetro &lt;strong&gt;resultCode&lt;/strong&gt;, obtêm os dados retornados através do parâmetro &lt;strong&gt;data&lt;/strong&gt; e exibe uma mensagem indicando os estados selecionados na Activity de Estados.&lt;/p&gt;

&lt;p&gt;O método&lt;strong&gt; getEstados(String)&lt;/strong&gt; retorna uma matriz com os estados de acordo com a região informada no parâmetro &lt;strong&gt;regiao&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A segunda classe é a &lt;strong&gt;StateListActivity.java&lt;/strong&gt; (Listagem 2). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Listagem 2&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; StateListActivity extends ListActivity implements OnItemClickListener {&lt;/pre&gt;

  &lt;pre&gt;    ListView listView;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    String[] estados;&lt;/pre&gt;

  &lt;pre&gt;    ArrayList&amp;lt;String&amp;gt; stateList;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        Intent intent = getIntent();&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (intent != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            estados = intent.getStringArrayExtra(&lt;span class="str"&gt;&amp;quot;estados&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// Exibe o listview com botão tipo checkbox&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            setListAdapter(&lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayAdapter&amp;lt;String&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;/pre&gt;

  &lt;pre class="alt"&gt;                    android.R.layout.simple_list_item_multiple_choice,&lt;/pre&gt;

  &lt;pre&gt;                    estados));&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;/pre&gt;

  &lt;pre&gt;            listView = getListView();&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="rem"&gt;// Desabilita o foco no item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            listView.setItemsCanFocus(&lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// Configura o listview para permitir a seleção de&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="rem"&gt;// vários itens simultaneamente&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            listView.setOnItemClickListener(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onItemClick(AdapterView&amp;lt;?&amp;gt; parent, View view, &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; position, &lt;span class="kwrd"&gt;long&lt;/span&gt; id) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        stateList = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList&amp;lt;String&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Mapa de Booleans com a informação dos estados selecionados&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        SparseBooleanArray status = listView.getCheckedItemPositions();&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Limpa a lista anterior para manter atualizada&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// a última seleção&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        stateList.clear();&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; status.size(); i++) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (status.valueAt(i) == &lt;span class="kwrd"&gt;true&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre&gt;                stateList.add((String)listView.getItemAtPosition&lt;/pre&gt;

  &lt;pre class="alt"&gt;                        (status.keyAt(i)));&lt;/pre&gt;

  &lt;pre&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onBackPressed() {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Verifica se algum estado foi selecionado&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (stateList != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="rem"&gt;// Passa as informações dos estados selecionados para&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// a activity pai&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            Intent intent = &lt;span class="kwrd"&gt;new&lt;/span&gt; Intent();&lt;/pre&gt;

  &lt;pre class="alt"&gt;            intent.putStringArrayListExtra(&lt;span class="str"&gt;&amp;quot;estados&amp;quot;&lt;/span&gt;, stateList);&lt;/pre&gt;

  &lt;pre&gt;            setResult(RESULT_OK, intent);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        {&lt;/pre&gt;

  &lt;pre&gt;            setResult(RESULT_CANCELED);            &lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        super.onBackPressed();&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;A classe &lt;strong&gt;StateListActivity.java&lt;/strong&gt; é responsável por exibir a tela com a relação de estados e permite a seleção ou não de um ou mais estados.&lt;/p&gt;

&lt;p&gt;O método &lt;strong&gt;onCreate(Bundle)&lt;/strong&gt; utiliza o método &lt;strong&gt;getIntent()&lt;/strong&gt; para obter a relação de estados que foi passada pela Activity principal (classe&lt;strong&gt; Main.java&lt;/strong&gt;) e exibe a tela com o layout configurado para exibir um listview com botão tipo checkbox, configurado com a opção de selecionar vários itens simultaneamente.&lt;/p&gt;

&lt;p&gt;O método &lt;strong&gt;onItemClick(AdapterView, View, int, long) &lt;/strong&gt;é chamado quando um item do listview é selecionado. Neste método é utilizada a classe &lt;strong&gt;SparseBooleanArray&lt;/strong&gt; que faz o mapeamento de boolean para integer e é utilizada para armazenar as informações de quais itens da relação de estados foi selecionado. Com o método &lt;strong&gt;valueAt(int)&lt;/strong&gt; da classe &lt;strong&gt;SparseBooleanArray&lt;/strong&gt;, obtemos o valor se true ou false para cada item, e com o método&lt;strong&gt; keyAt(int)&lt;/strong&gt; obtemos a chave dentro da lista de itens. Esta chave é utilizada para determinar qual o estado que está com o status selecionado. &lt;/p&gt;

&lt;p&gt;O método&lt;strong&gt; onBackPressed()&lt;/strong&gt; é chamado quando é acionado o botão “Voltar” do emulador. Este método&amp;#160; passa as informações dos estados selecionados para a Activity principal.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-1773942612208096383?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qaORsb1U7SBh8HkWtkllrw7_v-g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qaORsb1U7SBh8HkWtkllrw7_v-g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qaORsb1U7SBh8HkWtkllrw7_v-g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qaORsb1U7SBh8HkWtkllrw7_v-g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/kuyVDmCJfGg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/1773942612208096383/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/08/utilizando-o-listview-para-selecionar.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/1773942612208096383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/1773942612208096383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/kuyVDmCJfGg/utilizando-o-listview-para-selecionar.html" title="Utilizando o ListView para Selecionar Vários Itens no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-yGGmNIbM_Qk/TkHosdDVLTI/AAAAAAAAAKE/NRBwgQgdox8/s72-c/listviewmultiplechoice4_thumb%25255B8%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/08/utilizando-o-listview-para-selecionar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkABSHs4eip7ImA9WhZUFks.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-7131358536722686480</id><published>2011-06-09T17:06:00.001-03:00</published><updated>2011-06-09T22:19:19.532-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T22:19:19.532-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Obtendo as Propriedades de uma Figura em C#</title><content type="html">&lt;p&gt;Existem situações no projeto em que precisamos saber as propriedades de uma figura, como tamanho em Bytes, largura e altura em pixels ou a resolução, para determinarmos se a figura é adequada para a aplicação, ou se possui as propriedades corretas como tamanho, para fazer um download em um website.&lt;/p&gt;  &lt;p&gt;Para obter as propriedades da figura podemos utilizar a classe abstrata &lt;strong&gt;Image&lt;/strong&gt;. No código da Listagem 1 obtemos o tamanho em Bytes, a largura x altura em pixels e a resolução horizontal x resolução vertical em dpi.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Listagem 1&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// Lê o arquivo da figura&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            FileStream stream = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(&lt;span class="str"&gt;&amp;quot;imagem1.jpg&amp;quot;&lt;/span&gt;, FileMode.Open);&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; imageSize = 0;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; imageWidth = 0;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; imageHeight = 0;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;float&lt;/span&gt; imageHorizontalDpi = 0.0f;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;float&lt;/span&gt; imageVerticalDpi = 0.0f;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// Obtêm as propriedades da figura&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (Image image = Image.FromStream(stream, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;))&lt;/pre&gt;

  &lt;pre class="alt"&gt;            {&lt;/pre&gt;

  &lt;pre&gt;                imageSize = Convert.ToInt32(stream.Length);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                imageWidth = image.Width;&lt;/pre&gt;

  &lt;pre&gt;                imageHeight = image.Height;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                imageHorizontalDpi = image.HorizontalResolution;&lt;/pre&gt;

  &lt;pre&gt;                imageVerticalDpi = image.VerticalResolution;                &lt;/pre&gt;

  &lt;pre class="alt"&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Tamanho da Figura em Bytes: &amp;quot;&lt;/span&gt; + &lt;/pre&gt;

  &lt;pre&gt;                imageSize);&lt;/pre&gt;

  &lt;pre class="alt"&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Largura x Altura da Figura: &amp;quot;&lt;/span&gt; + &lt;/pre&gt;

  &lt;pre&gt;                imageWidth.ToString() + &lt;span class="str"&gt;&amp;quot; x &amp;quot;&lt;/span&gt; + imageHeight + &lt;span class="str"&gt;&amp;quot; pixels&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Resolução da Figura: &amp;quot;&lt;/span&gt; + imageHorizontalDpi + &lt;span class="str"&gt;&amp;quot; x &amp;quot;&lt;/span&gt; +&lt;/pre&gt;

  &lt;pre&gt;                imageVerticalDpi + &lt;span class="str"&gt;&amp;quot; dpi&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            Console.ReadLine();&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;



&lt;p&gt;Para a figura utilizada no código da Listagem 1 obtemos o seguinte resultado:&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;Tamanho da Figura em Bytes: 83794
    &lt;br /&gt;Largura x Altura da Figura: 800 x 600 pixels

    &lt;br /&gt;Resolução da Figura: 96 x 96 dpi&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-7131358536722686480?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Kc0Lku-xIQZQbNdJNve9eTmfZTo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kc0Lku-xIQZQbNdJNve9eTmfZTo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Kc0Lku-xIQZQbNdJNve9eTmfZTo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kc0Lku-xIQZQbNdJNve9eTmfZTo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/CJbLe8LciXI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/7131358536722686480/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/06/obtendo-as-propriedades-de-uma-figura.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7131358536722686480?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/7131358536722686480?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/CJbLe8LciXI/obtendo-as-propriedades-de-uma-figura.html" title="Obtendo as Propriedades de uma Figura em C#" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/06/obtendo-as-propriedades-de-uma-figura.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAQX09eSp7ImA9WhdRFU0.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-6134731054450132490</id><published>2011-05-23T21:19:00.001-03:00</published><updated>2011-08-04T21:47:20.361-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-04T21:47:20.361-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Exibindo uma Activity no Android</title><content type="html">&lt;p&gt;No sistema operacional do Android as telas que são apresentadas para o usuário são chamadas de Activity. Este post demonstra como chamar uma Activity “filha” através de uma Activity “pai” e retornar uma resposta quando o usuário retorna para a Activity “pai”.&lt;/p&gt;  &lt;p&gt;Para demonstrar a chamada da Activity foi utilizado o mesmo projeto do post &lt;a href="http://romarconsultoria.blogspot.com/2011/03/criando-um-listadapter-customizado-para.html" target="_blank"&gt;Criando um ListAdapter Customizado para o ListView do Android&lt;/a&gt; como projeto de partida. No projeto foi criado um ListView que exibe as informações dos Estados do Brasil.&lt;/p&gt;  &lt;p&gt;Neste post será implementada a chamada de uma Activity “filha” para exibir os detalhes do Estado que foi selecionado pelo usuário. Na Figura 1 temos a Activity principal que exibe a relação de Estados do Brasil, juntamente com as informações da Capital e Área do Estado. Na Figura 2 temos a Activity “filha” que exibe os detalhes do Estado selecionado pelo usuário. No exemplo o Estado selecionado foi Rio Grande do Norte.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/Tdr5a8x3EgI/AAAAAAAAAHs/NiiU8bP5Vec/s1600-h/figura_1_24.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="figura_1_2" border="0" alt="figura_1_2" src="http://lh3.ggpht.com/_BdopzjPwxSA/Tdr5baqXywI/AAAAAAAAAHw/5kl5uIYEG70/figura_1_2_thumb2.png?imgmax=800" width="650" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para exibir a Activity “filha” foi necessário fazer algumas inserções no código do projeto de partida, demonstrado na&lt;strong&gt; Listagem 1&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Listagem 1:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;package br.com.romar;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;import java.util.ArrayList;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;import java.util.List;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;import android.app.ListActivity;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;import android.content.Intent;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;import android.os.Bundle;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;import android.view.View;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;import android.widget.AdapterView;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;import android.widget.ListView;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;import android.widget.AdapterView.OnItemClickListener;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Main extends ListActivity implements OnItemClickListener {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    List&amp;lt;State&amp;gt; stateList;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="rem"&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        stateList = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList&amp;lt;State&amp;gt;();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; states.length; i++) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            State state = &lt;span class="kwrd"&gt;new&lt;/span&gt; State();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            state.setState(states[i][0]);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            state.setAbbreviation(states[i][1]);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            state.setCapital(states[i][2]);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            state.setArea(Float.parseFloat(states[i][3]));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            state.setBanner(images[i]);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            stateList.add(state);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        }  &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        setListAdapter(&lt;span class="kwrd"&gt;new&lt;/span&gt; StateAdapter(&lt;span class="kwrd"&gt;this&lt;/span&gt;, stateList));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        ListView listview = getListView();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        listview.setOnItemClickListener(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onItemClick(AdapterView&amp;lt;?&amp;gt; parent, View view, &lt;span class="kwrd"&gt;int&lt;/span&gt; position, &lt;span class="kwrd"&gt;long&lt;/span&gt; id) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        &lt;span class="rem"&gt;// Obtêm os detalhes do Estado selecionado&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        State state = stateList.get(position);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        &lt;span class="rem"&gt;// Exibe a Activity com os detalhes dos Estados&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        Intent intent = &lt;span class="kwrd"&gt;new&lt;/span&gt; Intent(&lt;span class="kwrd"&gt;this&lt;/span&gt;, DetailActivity.&lt;span class="kwrd"&gt;class&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        Bundle &lt;span class="kwrd"&gt;params&lt;/span&gt; = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bundle();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        &lt;span class="kwrd"&gt;params&lt;/span&gt;.putString(&lt;span class="str"&gt;&amp;quot;estado&amp;quot;&lt;/span&gt;, state.getState());&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="kwrd"&gt;params&lt;/span&gt;.putString(&lt;span class="str"&gt;&amp;quot;capital&amp;quot;&lt;/span&gt;, state.getCapital());&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        &lt;span class="kwrd"&gt;params&lt;/span&gt;.putFloat(&lt;span class="str"&gt;&amp;quot;area&amp;quot;&lt;/span&gt;, state.getArea());&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        intent.putExtras(&lt;span class="kwrd"&gt;params&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;        startActivity(intent);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String[][] states = &lt;span class="kwrd"&gt;new&lt;/span&gt; String[][]{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Acre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AC&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio Branco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;152581.4&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Alagoas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AL&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Maceió&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;27767.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Amapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Macapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;142814.6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Amazonas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Manaus&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1570745.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Bahia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;BA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Salvador&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;564692.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Ceará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;CE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Fortaleza&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;148825.6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Distrito Federal&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DF&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Brasília&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;5822.1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Espírito Santo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;ES&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Vitória&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;46077.5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Goiás&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;GO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Goiânia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;340086.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Maranhão&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;São Luís&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;331983.3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Mato Grosso&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MT&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Cuiabá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;903357.9&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Mato Grosso do Sul&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MS&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Campo Grande&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;357125.0&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Minas Gerais&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MG&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Belo Horizonte&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;586528.3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Pará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Belém&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1247689.5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Paraíba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PB&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;João Pessoa&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;56439.8&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Paraná&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PR&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Curitiba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;199314.9&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Pernambuco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Recife&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;98311.6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Piauí&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PI&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Teresina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;251529.2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RJ&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;43696.1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Rio Grande do Norte&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RN&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Natal&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;52796.8&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Rio Grande do Sul&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RS&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Porto Alegre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;281748.5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Rondônia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Porto Velho&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;237576.2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Roraima&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RR&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Boa Vista&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;224299.0&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Santa Catarina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SC&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Florianópolis&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;95346.2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;248209.4&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Sergipe&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Aracaju&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;21910.3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;           {&lt;span class="str"&gt;&amp;quot;Tocantins&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;TO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Palmas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;277620.9&amp;quot;&lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;       };&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] images = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[]{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;            R.drawable.acre,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;            R.drawable.alagoas,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;            R.drawable.amapa,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;            R.drawable.amazonas,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;            R.drawable.bahia,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;            R.drawable.ceara,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;            R.drawable.distritofederal,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;            R.drawable.espiritosanto,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;            R.drawable.goias,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;            R.drawable.maranhao,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;            R.drawable.matogrosso,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;            R.drawable.matogrossosul,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;            R.drawable.minasgerais,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;            R.drawable.para,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;            R.drawable.paraiba,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;            R.drawable.parana,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;            R.drawable.pernambuco,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;            R.drawable.piaui,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;            R.drawable.riojaneiro,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;            R.drawable.riograndenorte,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;            R.drawable.riograndesul,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;            R.drawable.rondonia,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;            R.drawable.roraima,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;            R.drawable.santacatarina,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;            R.drawable.saopaulo,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;            R.drawable.sergipe,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;            R.drawable.tocatins&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;    };&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Na linha 14 foi implementada a interface &lt;strong&gt;OnItemClickListener&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Na linha 37 foi obtido o widget &lt;strong&gt;ListView&lt;/strong&gt; da Activity através do método &lt;strong&gt;getListView()&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Na linha 39 foi registrado um callback para ser chamado quando um item no AdapterView é clicado, através do método &lt;strong&gt;setOnItemClickListener(AdapterView.OnItemClick listener)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Nas linhas 42 a 57 é sobrescrito o método &lt;strong&gt;onItemClick(AdapterView&amp;lt;?&amp;gt; parent, View view, int position, long id)&lt;/strong&gt;, que obtêm o Estado selecionado e as informações a serem exibidas na segunda Activity. Através do método &lt;strong&gt;startActivity(Intent)&lt;/strong&gt; a Activity da Figura 2 é exibida.&lt;/p&gt;

&lt;p&gt;Nas linhas 49 a 54 é criado o objeto &lt;strong&gt;intent&lt;/strong&gt; e o objeto &lt;strong&gt;params&lt;/strong&gt; onde são definidas as informações que serão passadas para a Activity “filha”.&lt;/p&gt;

&lt;p&gt;Para que seja exibida a Activity “filha” (chamada de DetailActivity) não esquecer de declarar a Activity&amp;#160; no arquivo &lt;em&gt;AndroidManifest.xml&lt;/em&gt; do projeto.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;activity&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.DetailActivity&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;android:label&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Detalhes do Estado&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;No arquivo da Activity &lt;strong&gt;DetailActivity&lt;/strong&gt; no método &lt;strong&gt;OnCreate(Bundle savedInstanceState)&lt;/strong&gt; são obtidos os valores das informações passadas pela Activity “pai”, demonstrado na&lt;strong&gt; Listagem 2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Listagem 2:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;// Configura o layout da Activity&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        setContentView(R.layout.state_detail);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;// Widgets da Activity&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        TextView textEstado = (TextView)findViewById(R.id.textEstado);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        TextView textCapital = (TextView)findViewById(R.id.textCapital);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        TextView textArea = (TextView)findViewById(R.id.textArea);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="rem"&gt;// Carrega os valores passados pela Activity Principal (Main)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        Intent intent = getIntent();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (intent != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            textEstado.setText(intent.getStringExtra(&lt;span class="str"&gt;&amp;quot;estado&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            textCapital.setText(intent.getStringExtra(&lt;span class="str"&gt;&amp;quot;capital&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            textArea.setText(String.valueOf(intent.getFloatExtra(&lt;span class="str"&gt;&amp;quot;area&amp;quot;&lt;/span&gt;, 0)));            &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;&amp;#160;&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Na linha 14 as informações passadas pela Activity “pai” são obtidas através do método &lt;strong&gt;getIntent()&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agora, e se com a apresentação da Activity “filha” quisessemos preencher algum campo e retornar esta informação para a Activity “pai”? Isto pode ser feito utilizando-se o método &lt;strong&gt;startActivityForResult(Intent, int) &lt;/strong&gt;ao invés do método&lt;strong&gt; startActivity(Intent)&lt;/strong&gt; utilizado anteriormente.&lt;/p&gt;

&lt;p&gt;O método &lt;strong&gt;startActivityForResult(Intent, int)&lt;/strong&gt;&amp;#160; faz a chamada de outra Activity, só que desta vez além do parâmetro Intent é passado como parâmetro um número inteiro utilizado para identificar a chamada.O resultado retornará através do método &lt;strong&gt;onActivityResult(int, int, Intent)&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Quando saímos de uma Activity, ela pode chamar o método &lt;strong&gt;setResult(int) &lt;/strong&gt;para retornar um dado de volta para a Activity chamadora. A Activity deve fornecer um código, que pode ser os resultados padrão RESULT_CANCELED, RESULT_OK, ou qualquer valor customizado. Opcionalmente ela pode retornar um &lt;strong&gt;Intent&lt;/strong&gt; contendo dados adicionais.&lt;/p&gt;

&lt;p&gt;Para demonstrar como retornar dados de uma Activity “filha”, vou utilizar o mesmo projeto fazendo pequenas alterações. &lt;/p&gt;

&lt;p&gt;Na classe &lt;strong&gt;Main&lt;/strong&gt; exibida na &lt;strong&gt;Listagem 1&lt;/strong&gt; acima, incluir a declaração da seguinte constante na classe.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; final &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CALL_SECOND_ACTIVITY = 1;&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Esta constante define o valor de identificação a ser passado no segundo parâmetro do método &lt;strong&gt;startActivityForResult(Intent, int)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No método &lt;strong&gt;onItemClick(AdapterView&amp;lt;?&amp;gt; parent, View view, int position, long id) &lt;/strong&gt;demonstrado na linha 43 da&lt;strong&gt; Listagem 1&lt;/strong&gt;, substituir a chamada da Activity&lt;strong&gt; startActivity(Intent) &lt;/strong&gt;(linha 56) pela linha abaixo:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;startActivityForResult(intent,CALL_SECOND_ACTIVITY);&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No código da &lt;strong&gt;Listagem 1&lt;/strong&gt; incluir o método &lt;strong&gt;onActivityResult(int, int, Intent)&lt;/strong&gt;, conforme demonstrado abaixo na Listagem 3:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Listagem 3:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="rem"&gt;     * Método chamado quando saímos da DetailActivity&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="rem"&gt;     * @param requestCode O código inteiro originalmente fornecido&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;     * no método startActivityForResult(), permitindo identificar&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt;     * quem fez a chamada.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt;     * @param resultCode O código inteiro retornado pela Activity&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;     * filha através do método setResult().&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;     * @param data Um Intent que pode retornar dados ao chamador.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onActivityResult(&lt;span class="kwrd"&gt;int&lt;/span&gt; requestCode, &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; resultCode, Intent data) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        super.onActivityResult(requestCode, resultCode, data);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="rem"&gt;// Verifica se é o código de quem fez a chamada&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (requestCode == CALL_SECOND_ACTIVITY) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="rem"&gt;// Verifica se o retorno foi com sucesso&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (resultCode ==RESULT_OK) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (data != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                    Bundle &lt;span class="kwrd"&gt;params&lt;/span&gt; = data.getExtras();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;params&lt;/span&gt;.getBoolean(&lt;span class="str"&gt;&amp;quot;visitar&amp;quot;&lt;/span&gt;) == &lt;span class="kwrd"&gt;true&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                         Toast.makeText(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Quero visitar &amp;quot;&lt;/span&gt; + &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                                 &lt;span class="kwrd"&gt;params&lt;/span&gt;.getString(&lt;span class="str"&gt;&amp;quot;estado&amp;quot;&lt;/span&gt;), &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                                 Toast.LENGTH_SHORT).show();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Este método será chamado quando a Activity “filha” for fechada.&lt;/p&gt;

&lt;p&gt;Na linha 16 é verificado se o código da identificação representa o mesmo código passado na chamada.&lt;/p&gt;

&lt;p&gt;Na linha 21 através da classe &lt;strong&gt;Bundle&lt;/strong&gt; obtemos a informação se o usuário deseja visitar o Estado e o nome do Estado.&lt;/p&gt;

&lt;p&gt;Substituir o código da&lt;strong&gt; Listagem 2&lt;/strong&gt; pelo da&lt;strong&gt; Listagem 4&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Listagem 4:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DetailActivity extends Activity implements OnClickListener {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    TextView textEstado;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    TextView textCapital;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    TextView textArea;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="rem"&gt;// Configura o layout da Activity&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        setContentView(R.layout.state_detail);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="rem"&gt;// Widgets da Activity&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        textEstado = (TextView)findViewById(R.id.textEstado);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        textCapital = (TextView)findViewById(R.id.textCapital);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        textArea = (TextView)findViewById(R.id.textArea);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="rem"&gt;// Carrega os valores passados pela Activity Principal (Main)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        Intent intent = getIntent();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (intent != &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            textEstado.setText(intent.getStringExtra(&lt;span class="str"&gt;&amp;quot;estado&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            textCapital.setText(intent.getStringExtra(&lt;span class="str"&gt;&amp;quot;capital&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            textArea.setText(String.valueOf(intent.getFloatExtra(&lt;span class="str"&gt;&amp;quot;area&amp;quot;&lt;/span&gt;, 0)));            &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        final RadioButton rbSim = (RadioButton)findViewById(R.id.rbSim);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        final RadioButton rbNao = (RadioButton)findViewById(R.id.rbNao);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        rbSim.setOnClickListener(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        rbNao.setOnClickListener(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onClick(View v) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        Intent intent = &lt;span class="kwrd"&gt;new&lt;/span&gt; Intent();        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="rem"&gt;// Verifica qual radiobutton foi selecionado&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (v.getId() == R.id.rbSim) {            &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            intent.putExtra(&lt;span class="str"&gt;&amp;quot;visitar&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            intent.putExtra(&lt;span class="str"&gt;&amp;quot;estado&amp;quot;&lt;/span&gt;, textEstado.getText().toString());&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            setResult(RESULT_OK, intent);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Nas linhas 27 e 28 foram incluídas as declarações do botões RadioButton.&lt;/p&gt;

&lt;p&gt;Nas linhas 30 3 31 foram registrados os eventos &lt;strong&gt;OnClickListener(View.OnClickListener)&lt;/strong&gt; para os botões Sim e Não.&lt;/p&gt;

&lt;p&gt;A partir da linha 35 temos o método que trata o botão selecionado.&amp;#160; Através de um Intent, é passado um boolean informando se deseja visitar o Estado e uma String com o nome do Estado.&lt;/p&gt;

&lt;p&gt;Na linha 41 é utilizado o método setResult(int, Intent), para poder passar o resultado OK da operação e a Intent com as informações se deseja visitar, e o nome do Estado.&lt;/p&gt;

&lt;p&gt;Executando a aplicação com as alterações descritas e selecionando o Estado Rio Grande do Norte com a opção de visitar, quando fechamos a Activity “filha” será apresentada uma mensagem com o nome do Estado que se deseja visitar, como apresentado na Figura 3:&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/Tdr5b-JsGNI/AAAAAAAAAH0/sICwljin0PI/s1600-h/figura39.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="figura3" border="0" alt="figura3" src="http://lh5.ggpht.com/_BdopzjPwxSA/Tdr5ctzgpmI/AAAAAAAAAH4/gLMLQfmVZC4/figura3_thumb5.png?imgmax=800" width="320" height="520" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Atualizado:&lt;/font&gt;&lt;/strong&gt; Como comentado por um leitor do post ficou faltando o xml da Activity dos detalhes do estado, que segue abaixo:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TableLayout&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;match_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;match_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="attr"&gt;android:stretchColumns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="attr"&gt;android:padding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Estado:&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:padding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:hint&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Nome do Estado...&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textEstado&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;       &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Capital:&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;           &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:hint&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Nome da Capital...&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textCapital&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;       &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Área:&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;           &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:hint&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Area em Km2...&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textArea&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;           &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;       &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;          &lt;span class="attr"&gt;android:layout_column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;          &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Visitar?&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;           &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RadioGroup&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RadioButton&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/rbSim&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Sim&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;35dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;              &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RadioButton&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/rbNao&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Não&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;35dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;              &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;24sp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RadioGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TableRow&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TableLayout&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-6134731054450132490?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mpVNfqr8C3ANxpYxL2phHyvJsiw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mpVNfqr8C3ANxpYxL2phHyvJsiw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mpVNfqr8C3ANxpYxL2phHyvJsiw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mpVNfqr8C3ANxpYxL2phHyvJsiw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/mrBXIme4Wsk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/6134731054450132490/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/05/exibindo-uma-activity-no-android.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/6134731054450132490?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/6134731054450132490?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/mrBXIme4Wsk/exibindo-uma-activity-no-android.html" title="Exibindo uma Activity no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_BdopzjPwxSA/Tdr5baqXywI/AAAAAAAAAHw/5kl5uIYEG70/s72-c/figura_1_2_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/05/exibindo-uma-activity-no-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8MRn4zfip7ImA9WhdWE0g.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-766182094814889860</id><published>2011-03-28T12:09:00.001-03:00</published><updated>2011-09-06T22:11:27.086-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T22:11:27.086-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Criando um ListAdapter Customizado para o ListView do Android</title><content type="html">&lt;p&gt;&lt;em&gt;Post atualizado em 06/09/2011.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;O widget ListView é um componente poderoso e flexível do Android, normalmente utilizado para exibir uma simples lista de dados. Este post descreve como criar um ListAdapter para exibir várias informações e uma figura em cada linha do ListView.&lt;/p&gt;  &lt;p&gt;Para demonstrar a criação do ListAdapter customizado foi criado um projeto para exibir em um ListView os estados do Brasil, juntamente com a abreviação, nome da capital, área em km&lt;sup&gt;2&lt;/sup&gt; e a imagem da bandeira do estado. O projeto rodando apresenta a seguinte tela:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/TZCkm8gWtvI/AAAAAAAAAHE/CB-ImsjHGpU/s1600-h/device3%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="device3" border="0" alt="device3" src="http://lh5.ggpht.com/_BdopzjPwxSA/TZCknYjPVtI/AAAAAAAAAHI/FaPqgupkVh8/device3_thumb%5B4%5D.png?imgmax=800" width="324" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O projeto possui somente uma Activity que carrega o ListView no método &lt;strong&gt;OnCreate()&lt;/strong&gt; demonstrado no arquivo &lt;strong&gt;Main.java&lt;/strong&gt;.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Main extends ListActivity {&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        List&amp;lt;State&amp;gt; stateList = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList&amp;lt;State&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; states.length; i++) {&lt;/pre&gt;

  &lt;pre&gt;            State state = &lt;span class="kwrd"&gt;new&lt;/span&gt; State();&lt;/pre&gt;

  &lt;pre class="alt"&gt;            state.setState(states[i][0]);&lt;/pre&gt;

  &lt;pre&gt;            state.setAbbreviation(states[i][1]);&lt;/pre&gt;

  &lt;pre class="alt"&gt;            state.setCapital(states[i][2]);&lt;/pre&gt;

  &lt;pre&gt;            state.setArea(Float.parseFloat(states[i][3]));&lt;/pre&gt;

  &lt;pre class="alt"&gt;            state.setBanner(images[i]);&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            stateList.add(state);&lt;/pre&gt;

  &lt;pre&gt;        }  &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        setListAdapter(&lt;span class="kwrd"&gt;new&lt;/span&gt; StateAdapter(&lt;span class="kwrd"&gt;this&lt;/span&gt;, stateList));&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String[][] states = &lt;span class="kwrd"&gt;new&lt;/span&gt; String[][]{&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Acre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AC&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio Branco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;152581.4&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Alagoas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AL&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Maceió&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;27767.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Amapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Macapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;142814.6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Amazonas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Manaus&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1570745.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Bahia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;BA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Salvador&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;564692.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Ceará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;CE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Fortaleza&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;148825.6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Distrito Federal&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DF&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Brasília&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;5822.1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Espírito Santo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;ES&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Vitória&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;46077.5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Goiás&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;GO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Goiânia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;340086.7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Maranhão&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;São Luís&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;331983.3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Mato Grosso&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MT&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Cuiabá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;903357.9&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Mato Grosso do Sul&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MS&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Campo Grande&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;357125.0&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Minas Gerais&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MG&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Belo Horizonte&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;586528.3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Pará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Belém&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1247689.5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Paraíba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PB&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;João Pessoa&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;56439.8&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Paraná&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PR&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Curitiba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;199314.9&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Pernambuco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Recife&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;98311.6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Piauí&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PI&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Teresina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;251529.2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RJ&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;43696.1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Rio Grande do Norte&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RN&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Natal&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;52796.8&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Rio Grande do Sul&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RS&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Porto Alegre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;281748.5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Rondônia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Porto Velho&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;237576.2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Roraima&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RR&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Boa Vista&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;224299.0&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Santa Catarina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SC&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Florianópolis&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;95346.2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;248209.4&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;           {&lt;span class="str"&gt;&amp;quot;Sergipe&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Aracaju&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;21910.3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;           {&lt;span class="str"&gt;&amp;quot;Tocantins&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;TO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Palmas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;277620.9&amp;quot;&lt;/span&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;       };&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] images = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[]{&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.acre,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.alagoas,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.amapa,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.amazonas,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.bahia,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.ceara,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.distritofederal,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.espiritosanto,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.goias,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.maranhao,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.matogrosso,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.matogrossosul,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.minasgerais,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.para,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.paraiba,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.parana,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.pernambuco,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.piaui,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.riojaneiro,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.riograndenorte,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.riograndesul,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.rondonia,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.roraima,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.santacatarina,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.saopaulo,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            R.drawable.sergipe,&lt;/pre&gt;

  &lt;pre&gt;            R.drawable.tocatins&lt;/pre&gt;

  &lt;pre class="alt"&gt;    };&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No método &lt;strong&gt;OnCreate()&lt;/strong&gt; foi criado um ArrayList com as informações dos estados. Normalmente este tipo de informação é carregada de uma base de dados ou de alguma outra fonte de informação, mas como o objetivo é demonstrar a utilização do ListView, foi criado um array com as informações dos estados (&lt;em&gt;states&lt;/em&gt;) e outro array com as imagens das bandeiras (&lt;em&gt;images&lt;/em&gt;). As imagens foram obtidas dos arquivos colocados na pasta de resource &lt;em&gt;res/drawable-mdpi&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Para montar o ArrayList foi utilizada a classe &lt;em&gt;State&lt;/em&gt;, descrita no arquivo &lt;strong&gt;State.java&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; State {&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String state;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String abbreviation;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; String capital;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;float&lt;/span&gt; area;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; banner;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; String getState() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; state;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; setState(String state) {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.state = state;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; String getAbbreviation() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; abbreviation;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; setAbbreviation(String shortening) {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.abbreviation = shortening;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; String getCapital() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; capital;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; setCapital(String capital) {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.capital = capital;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;float&lt;/span&gt; getArea() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; area;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; setArea(&lt;span class="kwrd"&gt;float&lt;/span&gt; area) {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.area = area;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; getBanner() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; banner;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; setBanner(&lt;span class="kwrd"&gt;int&lt;/span&gt; banner) {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.banner = banner;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;O cursor para as informações do ListView é montado utilizando o método &lt;strong&gt;setListAdapter(ListAdapter adapter)&lt;/strong&gt; da classe &lt;strong&gt;ListActivity&lt;/strong&gt;. No parâmetro adapter foi utilizada a classe &lt;em&gt;StateAdapter&lt;/em&gt; que recebe como parâmetros o contexto da Activity e o ArrayList com as informações dos estados. O arquivo &lt;strong&gt;StateAdapter.java&lt;/strong&gt; descreve os métodos que são necessários para montar o cursor do ListView.&amp;#160; &lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/** &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt; * Adapter utilizado para exibir as informações dos Estados&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt; * no ListView.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt; * @author Administrador&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt; *&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; StateAdapter extends BaseAdapter {&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; Context context;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; List&amp;lt;State&amp;gt; stateList;&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; StateAdapter(Context context, List&amp;lt;State&amp;gt; statelist){&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.context = context;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.stateList = statelist;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; getCount() {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; stateList.size();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Object getItem(&lt;span class="kwrd"&gt;int&lt;/span&gt; position) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; stateList.get(position);&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; getItemId(&lt;span class="kwrd"&gt;int&lt;/span&gt; position) {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; position;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; View getView(&lt;span class="kwrd"&gt;int&lt;/span&gt; position, View convertView, ViewGroup parent) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Recupera o estado da posição atual&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        State state = stateList.get(position);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Cria uma instância do layout XML para os objetos correspondentes&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// na View&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        LayoutInflater inflater = (LayoutInflater)&lt;/pre&gt;

  &lt;pre class="alt"&gt;            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);&lt;/pre&gt;

  &lt;pre&gt;        View view = inflater.inflate(R.layout.listview_states, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Estado - Abreviação&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        TextView textState = (TextView)view.findViewById(R.id.textState);&lt;/pre&gt;

  &lt;pre&gt;        textState.setText(state.getState() + &lt;span class="str"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + state.getAbbreviation());&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Capital&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        TextView textCapital = (TextView)view.findViewById(R.id.textCapital);&lt;/pre&gt;

  &lt;pre&gt;        textCapital.setText(state.getCapital());&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Área&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        TextView textArea = (TextView)view.findViewById(R.id.textArea);&lt;/pre&gt;

  &lt;pre&gt;        textArea.setText(String.valueOf(state.getArea()));&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Bandeira&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        ImageView img = (ImageView)view.findViewById(R.id.imageState);&lt;/pre&gt;

  &lt;pre&gt;        img.setImageResource(state.getBanner());&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; view;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;A classe &lt;em&gt;StateAdapter&lt;/em&gt; extende a classe &lt;strong&gt;BaseAdapter&lt;/strong&gt; que deve implementar os métodos:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;#160;&lt;strong&gt;getCount()&lt;/strong&gt;: retorna o número de itens. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;getItem(int position)&lt;/strong&gt;: retorna o item de uma posição específica.&lt;strong&gt;&amp;#160;&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;&amp;#160;&lt;strong&gt;getItemId(int position)&lt;/strong&gt;: retorna o Id de um item de uma posição específica. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;getView(int position, View convertView, ViewGroup parent)&lt;/strong&gt;: retorna a View com as informações posicionadas de acordo com o layout montado no arquivo &lt;em&gt;listview_states.xml&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O arquivo &lt;strong&gt;listview_states.xml&lt;/strong&gt; monta o layout que é utilizado em cada linha do ListView, para posicionar as informações em um formato customizado.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RelativeLayout&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="attr"&gt;android:padding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="attr"&gt;android:background&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#cccccc&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ImageView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/imageState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;60dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;42dp&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:background&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#ffffff&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:scaleType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;centerCrop&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fill_parent&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_toRightOf&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/imageState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_alignTop&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/imageState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;São Paulo - SP&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:textSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;20sp&amp;quot;&lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:textColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#333333&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:paddingLeft&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5dp&amp;quot;&lt;/span&gt;  &lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;/pre&gt;

  &lt;pre&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textCapital&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_below&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_toRightOf&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/imageState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;São Paulo&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="attr"&gt;android:textColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#333333&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:paddingLeft&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5dp&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;  &lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textArea&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:layout_below&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@+id/textState&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:layout_alignParentRight&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;100000&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:textColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#333333&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;  &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RelativeLayout&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No método &lt;strong&gt;getView&lt;/strong&gt; utilizando a classe &lt;strong&gt;LayoutInflater&lt;/strong&gt; e a classe &lt;strong&gt;View&lt;/strong&gt; podemos associar cada widget do layout à informação que deve ser exibida no ListView.&lt;/p&gt;

&lt;p&gt;No exemplo deste post, quando um item do ListView recebe o foco a tradicional cor “Laranja” de fundo não aparece. Isto acontece porque o ListView possui uma cor de fundo opaca, neste caso “cinza”. Na verdade o foco “Laranja” é exibido, mas somente atrás do background do ListView.&lt;/p&gt;

&lt;p&gt;Uma possível solução para exibir o fundo “Laranja” neste caso, é fazer uma pequena alteração da definição do layout da tela.&lt;/p&gt;

&lt;p&gt;Primeiro precisamos criar um arquivo tipo&lt;strong&gt; StateList&lt;/strong&gt; para definir as cores que serão apresentadas quando o item do ListView for pressionado, selecionado ou receber foco. Para isso foi criado o arquivo&lt;strong&gt; list_selector.xml&lt;/strong&gt;, que deve ser colocado no diretório&lt;em&gt; res/drawable&lt;/em&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;selector&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:state_pressed&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:drawable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@android:color/transparent&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:state_selected&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:drawable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@android:color/transparent&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="attr"&gt;android:state_focused&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:drawable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@android:color/transparent&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="attr"&gt;android:drawable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@color/cinza&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;selector&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Os itens relativos aos estados pressionado, selecionado ou com focus devem ser configurados com o atributo &lt;strong&gt;android:drawable&lt;/strong&gt; com cor transparente, somente o último item que representa o item sem mudança de estado deve ser configurado com a cor cinza. A cor cinza foi declarada no arquivo &lt;strong&gt;color.xml&lt;/strong&gt; que deve ser colocado no diretório &lt;em&gt;res/values&lt;/em&gt;.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;color&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;cinza&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;#cccccc&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;color&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Para que o fundo “laranja” funcione altere no arquivo &lt;strong&gt;listview_states.xml&lt;/strong&gt; o atributo &lt;strong&gt;android:drawable&lt;/strong&gt; da tag RelativeLayout de &lt;strong&gt;android:background=&amp;quot;#cccccc&amp;quot;&lt;/strong&gt; para &lt;strong&gt;android:background=&amp;quot;@drawable/list_selector&amp;quot;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agora quando um item for clicado teremos a seguinte tela:&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/-fk42g5lRk44/TmbEuqt6ygI/AAAAAAAAAKo/v6Ivu0mcCUI/s1600-h/listviewfundolaranja%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="listviewfundolaranja" border="0" alt="listviewfundolaranja" src="http://lh5.ggpht.com/-KNMib98DZ8s/TmbEvTFxd9I/AAAAAAAAAKs/ClHX2SD_2ZE/listviewfundolaranja_thumb%25255B2%25255D.png?imgmax=800" width="274" height="413" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-766182094814889860?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZZetr87acVjVzqcAxJt3NVz3KFU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZZetr87acVjVzqcAxJt3NVz3KFU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZZetr87acVjVzqcAxJt3NVz3KFU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZZetr87acVjVzqcAxJt3NVz3KFU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/QEUDj-7xWOc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/766182094814889860/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/03/criando-um-listadapter-customizado-para.html#comment-form" title="12 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/766182094814889860?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/766182094814889860?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/QEUDj-7xWOc/criando-um-listadapter-customizado-para.html" title="Criando um ListAdapter Customizado para o ListView do Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_BdopzjPwxSA/TZCknYjPVtI/AAAAAAAAAHI/FaPqgupkVh8/s72-c/device3_thumb%5B4%5D.png?imgmax=800" height="72" width="72" /><thr:total>12</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/03/criando-um-listadapter-customizado-para.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEINRXo5cSp7ImA9WhZSEEw.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-714483676527086890</id><published>2011-03-23T15:50:00.001-03:00</published><updated>2011-03-24T21:23:14.429-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-24T21:23:14.429-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Usando uma Figura de Fundo em uma Tela com ListView no Android</title><content type="html">&lt;p&gt;Por padrão o Android apresenta a tela com cor de fundo escuro, e a maioria dos widgets possuem cor de fundo transparente. O widget ListView obedece a mesma regra, normalmente sendo utilizado em uma tela com cor de fundo sólida ou transparente. Caso seja utilizado em uma tela com cor de fundo diferente de uma cor sólida, como por exemplo usando uma figura, é necessário tomar um certo cuidado no projeto, para que o ListView no momento do scroll não apresente um fundo escuro no meio da figura.&lt;/p&gt;  &lt;p&gt;Este post descreve como exibir uma figura de fundo em uma tela com ListView e como corrigir o problema ocasionado durante o scroll do ListView. Observe na figura abaixo uma tela com ListView e uma figura de fundo mostrando o efeito do scroll. A figura da esquerda mostra a tela exibida na iniciação da aplicação e a figura da direita mostra a tela no momento é quem é feito o scroll.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/TYpA-Ywg31I/AAAAAAAAAG0/cjCjQ-tuPug/s1600-h/imagem1%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="imagem1" border="0" alt="imagem1" src="http://lh6.ggpht.com/_BdopzjPwxSA/TYpA_l-dpzI/AAAAAAAAAG4/au3hvQ8b3vA/imagem1_thumb%5B1%5D.png?imgmax=800" width="662" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Na figura onde é feito o scroll podemos observar que a figura deixa de ser exibida corretamente. Isto ocorre devido a uma otimização de exibição de tela no sistema do Android. Para solucionar este problema, no framework do Android foi criado o método &lt;b&gt;setCacheColorHint(int)&lt;/b&gt; que pode ser configurado via código, ou podemos utilizar o atributo &lt;code&gt;android:cacheColorHint&lt;/code&gt; no arquivo XML do layout.&lt;/p&gt;  &lt;p&gt;Para demonstrar a utilização do ListView com figura de fundo foi criado um projeto para exibir a relação de estados do Brasil em um ListView cuja figura de fundo é o mapa do Brasil. &lt;/p&gt;  &lt;p&gt;Para exibir a figura de fundo foi criado um arquivo &lt;b&gt;theme.xml&lt;/b&gt; na pasta&lt;i&gt; res/values&lt;/i&gt; que configura a figura de fundo na janela do Android. &lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;&amp;lt;!-- Imagem de fundo da tela do listview --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MapBackground&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;parent&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android:Theme&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android:windowBackground&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;@drawable/mapa&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android:windowNoTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;true&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;



&lt;p&gt;Observe que foi criada a tag &amp;lt;style&amp;gt; com o nome &lt;i&gt;MapBackground&lt;/i&gt;, e a janela do Android foi configurada com a figura do mapa através da tag: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;item name=&amp;quot;android:windowBackground&amp;quot;&amp;gt;@drawable/mapa&amp;lt;/item&amp;gt;&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Também foi configurado para que a janela não exiba título, através da tag: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;item name=&amp;quot;android:windowNoTitle&amp;quot;&amp;gt;true&amp;lt;/item&amp;gt; &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;O tema deve ser aplicado na Activity que vai exibir o ListView. Esta configuração pode ser feita no arquivo &lt;b&gt;AndroidManifest.xml&lt;/b&gt;.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;manifest&lt;/span&gt; &lt;span class="attr"&gt;xmlns:android&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;package&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;br.com.romar&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="attr"&gt;android:versionCode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;      &lt;span class="attr"&gt;android:versionName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;application&lt;/span&gt; &lt;span class="attr"&gt;android:icon&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@drawable/icon&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;android:label&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@string/app_name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;activity&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.Main&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                  &lt;span class="attr"&gt;android:label&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@string/app_name&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                  &lt;span class="attr"&gt;android:theme&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@style/MapBackground&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;intent-filter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;action&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.intent.action.MAIN&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;category&lt;/span&gt; &lt;span class="attr"&gt;android:name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;android.intent.category.LAUNCHER&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;intent-filter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;activity&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;application&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uses-sdk&lt;/span&gt; &lt;span class="attr"&gt;android:minSdkVersion&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;manifest&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No arquivo &lt;strong&gt;AndroidManifest.xml&lt;/strong&gt; na tag &amp;lt;activity&amp;gt; da tela de iniciação (.Main) foi inserido o atributo&lt;code&gt; android:theme=&amp;quot;@style/MapBackground&amp;quot;&lt;/code&gt; que configura o tema da Activity para exibir a figura do mapa. &lt;/p&gt;

&lt;p&gt;No arquivo &lt;strong&gt;Main.java&lt;/strong&gt; no método OnCreate foi inserido o código para exibição dos estados no ListView e a configuração do ListView para corrigir o efeito do scroll.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Main extends ListActivity {&lt;/pre&gt;

  &lt;pre&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="preproc"&gt;@Override&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;/pre&gt;

  &lt;pre&gt;        super.onCreate(savedInstanceState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// Obtêm a relação de estados que está armazenado&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// no arquivo strings.xml&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        String[] states = getResources().getStringArray(&lt;/pre&gt;

  &lt;pre class="alt"&gt;                R.array.state_array);&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Preenche o ListView com os estados&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        setListAdapter(&lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayAdapter&amp;lt;String&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;/pre&gt;

  &lt;pre class="alt"&gt;                android.R.layout.simple_list_item_1, states));&lt;/pre&gt;

  &lt;pre&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Obtêm o ListView&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        ListView lv = getListView();&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// Configurando o método setCacheColorHint para &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;// o valor 0 informamos que a cor de fundo do listview&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// possui não possui cor única, sólida ou opaca&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        lv.setCacheColorHint(0);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;



&lt;p&gt;No método &lt;b&gt;onCreate(Bundle savedInstanceState)&lt;/b&gt; foi utilizado como fonte de dados um array chamado &lt;i&gt;state_array&lt;/i&gt;, configurado no arquivo &lt;b&gt;strings.xml&lt;/b&gt; localizado na pasta &lt;em&gt;res/values&lt;/em&gt;.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;string&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;app_name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ListViewI&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;string&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;string-array&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;state_array&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Acre&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Alagoas&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Amapá&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Amazonas&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Bahia&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Ceará&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Distrito Federal&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Espírito Santo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Goiás&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Maranhão&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mato Grosso&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mato Grosso do Sul&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Minas Gerais&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Pará&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Paraíba&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Paraná&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Pernambuco&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Piauí&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Rio de Janeiro&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Rio Grande do Norte&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Rio Grande do Sul&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Rondônia&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Roraima&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Santa Catarina&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;São Paulo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sergipe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Tocatins&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;string-array&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Para exibir o ListView foi utilizado o layout padrão do sistema Android, &lt;i&gt;simple_list_item_1&lt;/i&gt;, configurado no método &lt;b&gt;setListAdapter()&lt;/b&gt;. &lt;/p&gt;

&lt;p&gt;Após criado o ListView, foi utilizado o método &lt;strong&gt;getListView()&lt;/strong&gt;&amp;#160; para obter o ListView da Activity e&amp;#160; poder desabilitar a otimização da tela através do método &lt;strong&gt;setCacheColorHint()&lt;/strong&gt;. O valor utilizado foi 0 que representa cor de fundo transparente. &lt;/p&gt;

&lt;p&gt;Com a inserção do método &lt;strong&gt;setCacheColorHint()&lt;/strong&gt; o scroll pode ser feito normalmente sem apresentar o defeito na figura de fundo.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-714483676527086890?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xKbAYfokOywUhulc0b6ta46EIpw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xKbAYfokOywUhulc0b6ta46EIpw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xKbAYfokOywUhulc0b6ta46EIpw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xKbAYfokOywUhulc0b6ta46EIpw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/qnBJsA1JC6c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/714483676527086890/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/03/usando-uma-figura-de-fundo-em-uma-tela.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/714483676527086890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/714483676527086890?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/qnBJsA1JC6c/usando-uma-figura-de-fundo-em-uma-tela.html" title="Usando uma Figura de Fundo em uma Tela com ListView no Android" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_BdopzjPwxSA/TYpA_l-dpzI/AAAAAAAAAG4/au3hvQ8b3vA/s72-c/imagem1_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/03/usando-uma-figura-de-fundo-em-uma-tela.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08HSHo6fip7ImA9WhZTFE0.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-1132885527617006895</id><published>2011-03-17T21:57:00.001-03:00</published><updated>2011-03-17T21:57:19.416-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-17T21:57:19.416-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WebService" /><title>Retornando Dados em Json com WebService .NET</title><content type="html">&lt;p&gt;O webservice .NET retorna as informações utilizando o protocolo SOAP e os dados em formato XML. Este artigo mostra como retornar os dados no formato JSON, utilizando um webservice na versão 3.5 do .NET Framework.&lt;/p&gt;  &lt;p&gt;Para mostrar como retornar dados no formato JSON,&amp;#160; foi criado um webservice que retorna a relação de Estados do Brasil, juntamente com as informações de capital, área em km&lt;sup&gt;2&lt;/sup&gt; e abreviação de cada estado.&lt;/p&gt;  &lt;p&gt;Para que o webservice retorne os dados em JSON é necessário inserir o atributo &lt;b&gt;[System.Web.Script.Services.ScriptService] &lt;/b&gt;na classe do webservice (linha 4) e o atributo&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;[ScriptMethod(ResponseFormat=ResponseFormat.Json)]&lt;/b&gt; (linha 45) no método que vai retornar os dados, como demonstrado no código abaixo:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[WebService(Namespace = &lt;span class="str"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="rem"&gt;// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;[System.Web.Script.Services.ScriptService]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Service : System.Web.Services.WebService&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[,] estados = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[27, 4] &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Acre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AC&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio Branco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;152581,4&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Alagoas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AL&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Maceió&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;27767,7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Amapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Macapá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;142814,6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Amazonas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Manaus&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1570745,7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Bahia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;BA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Salvador&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;564692,7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Ceará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;CE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Fortaleza&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;148825,6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Distrito Federal&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DF&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Brasília&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;5822,1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Espírito Santo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;ES&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Vitória&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;46077,5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Goiás&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;GO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Goiânia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;340086,7&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Maranhão&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;São Luís&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;331983,3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Mato Grosso&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MT&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Cuiabá&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;903357,9&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Mato Grosso do Sul&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MS&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Campo Grande&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;357125,0&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Minas Gerais&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;MG&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Belo Horizonte&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;586528,3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Pará&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PA&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Belém&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1247689,5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Paraíba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PB&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;João Pessoa&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;56439,8&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Paraná&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PR&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Curitiba&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;199314,9&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Pernambuco&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Recife&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;98311,6&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Piauí&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PI&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Teresina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;251529,2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RJ&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Rio de Janeiro&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;43696,1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Rio Grande do Norte&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RN&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Natal&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;52796,8&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Rio Grande do Sul&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RS&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Porto Alegre&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;281748,5&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Rondônia&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Porto Velho&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;237576,2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Roraima&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;RR&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Boa Vista&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;224299,0&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Santa Catarina&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SC&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Florianópolis&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;95346,2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;São Paulo&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;248209,4&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Sergipe&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SE&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Aracaju&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;21910,3&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        {&lt;span class="str"&gt;&amp;quot;Tocantins&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;TO&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Palmas&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;277620,9&amp;quot;&lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    };&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Service () {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        &lt;span class="rem"&gt;//Uncomment the following line if using designed components &lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        &lt;span class="rem"&gt;//InitializeComponent(); &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    [WebMethod]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    [ScriptMethod(ResponseFormat=ResponseFormat.Json)]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetEstados() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        JavaScriptSerializer js = &lt;span class="kwrd"&gt;new&lt;/span&gt; JavaScriptSerializer();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        List&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt; obj = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; estados.GetUpperBound(0); i++)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            Estados estado = &lt;span class="kwrd"&gt;new&lt;/span&gt; Estados();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;            estado.Nome = estados[i, 0];&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            estado.Abreviacao = estados[i, 1];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            estado.Capital = estados[i, 2];&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            estado.Area = estados[i, 3];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            obj.Add(estado);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; js.Serialize(obj);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Estados&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Nome { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Abreviacao { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Capital { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Area { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;No método &lt;strong&gt;GetEstados()&lt;/strong&gt; foi utilizada a classe &lt;b&gt;JavaScriptSerializer&lt;/b&gt; (linha 47) para criar um objeto que serializa no formato JSON, a lista de objetos E&lt;i&gt;stados&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;Na execução do webservice obtemos o seguinte retorno:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/TYKt43is_wI/AAAAAAAAAGc/4jphB_2GPvU/s1600-h/webservicejson1%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="webservicejson1" border="0" alt="webservicejson1" src="http://lh6.ggpht.com/_BdopzjPwxSA/TYKt5_NwaSI/AAAAAAAAAGg/MnHdr-zO1_U/webservicejson1_thumb%5B1%5D.png?imgmax=800" width="661" height="357" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na figura podemos observar que os dados foram retornados em JSON, mas precisamos ter um cuidado no momento de utilizar o retorno deste webservice, porque mesmo o retorno dos dados estando no formato JSON o webservice na verdade retorna um XML com uma tag &amp;lt;string&amp;gt;, onde no valor da string são retornados os dados no formato JSON.&lt;/p&gt;

&lt;p&gt;Para que aplicações possam utilizar os dados é necessário fazer a leitura somente da tag &amp;lt;string&amp;gt;. A aplicação que utilizar os dados deste webservice precisa ler o conteúdo da tag &amp;lt;string&amp;gt; para obter a informação em JSON.&lt;/p&gt;

&lt;p&gt;Segue uma figura com os dados já formatados como Json.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/TYKt6Ww5fyI/AAAAAAAAAGk/9Isq8Mp0BpY/s1600-h/webservicejson2%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="webservicejson2" border="0" alt="webservicejson2" src="http://lh3.ggpht.com/_BdopzjPwxSA/TYKt7FyUY1I/AAAAAAAAAGo/ULjFMuDerOg/webservicejson2_thumb%5B1%5D.png?imgmax=800" width="355" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-1132885527617006895?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5Z2_foXkctyDdWzpyqPAzUx5uK8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Z2_foXkctyDdWzpyqPAzUx5uK8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5Z2_foXkctyDdWzpyqPAzUx5uK8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Z2_foXkctyDdWzpyqPAzUx5uK8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/5hJ6vNTGho4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/1132885527617006895/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/03/retornando-dados-em-json-com-webservice.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/1132885527617006895?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/1132885527617006895?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/5hJ6vNTGho4/retornando-dados-em-json-com-webservice.html" title="Retornando Dados em Json com WebService .NET" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_BdopzjPwxSA/TYKt5_NwaSI/AAAAAAAAAGg/MnHdr-zO1_U/s72-c/webservicejson1_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/03/retornando-dados-em-json-com-webservice.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBQHk-fCp7ImA9WhdbFE8.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-3407041001161172740</id><published>2011-03-10T22:02:00.001-03:00</published><updated>2011-10-12T10:32:31.754-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T10:32:31.754-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Escrita e Leitura de Arquivo no Android–Parte II</title><content type="html">&lt;p&gt;No primeiro post sobre &lt;a href="http://romarconsultoria.blogspot.com/2011/02/escrita-e-leitura-na-memoria-interna-do.html"&gt;escrita e leitura de arquivos no Android&lt;/a&gt; descrevi como ler e escrever na memória interna do Android. Este post descreve como escrever e ler em arquivos armazenados no cartão SD do dispositivo.&lt;/p&gt;  &lt;p&gt;Antes de optar em gravar informações no cartão SD do dispositivo, lembre-se que o usuário terá acesso as informações deste arquivo e poderá apagá-lo a qualquer momento. Também não existe a garantia do arquivo não ser apagado durante a conexão ou desconexão do dispositivo com o microcomputador, caso o mesmo seja desconectado de forma incorreta.&lt;/p&gt;  &lt;p&gt;Para demonstrar a leitura e escrita no cartão SD, vou utilizar o mesmo layout do projeto da &lt;a href="http://romarconsultoria.blogspot.com/2011/02/escrita-e-leitura-na-memoria-interna-do.html"&gt;parte I&lt;/a&gt; do post:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/TXl0jcriaRI/AAAAAAAAAGA/16hZ6v537yo/s1600-h/arquivo13.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="arquivo1" border="0" alt="arquivo1" src="http://lh4.ggpht.com/_BdopzjPwxSA/TXl0kCaGP5I/AAAAAAAAAGE/QqNEn2BCv-I/arquivo1_thumb1.png?imgmax=800" width="324" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Antes de criar e escrever em um arquivo no cartão SD de um dispositivo, é necessário verificar se o cartão está inserido, quais são as permissões de escrita e leitura, se o sistema de arquivo é reconhecido pelo dispositivo, entre outras informações.&lt;/p&gt;  &lt;p&gt;Foi criada a classe &lt;strong&gt;ManageFile&lt;/strong&gt; com o método &lt;strong&gt;getStateSDcard()&lt;/strong&gt; que verifica o estado do cartão SD, o método&amp;#160; &lt;strong&gt;WriteFile()&lt;/strong&gt; que faz a escrita do texto e o método &lt;strong&gt;ReadFile()&lt;/strong&gt; que faz a leitura do texto armazenado no cartão SD.&lt;/p&gt;   &lt;div id="codeSnippetWrapper"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; ManageFile {&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; String TAG = &lt;span style="color: #006080;"&gt;"ManageFile"&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; Context context;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; sdCardAvailable;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; sdCardWritableReadable;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; sdCardReadableOnly;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; ManageFile(Context context){&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.context = context;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * Escreve no arquivo texto.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @param text Texto a ser escrito.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @return True se o texto foi escrito com sucesso.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; WriteFile(String text){&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt; {&lt;br /&gt;            File file = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; File(context.getExternalFilesDir(null),&lt;br /&gt;                &lt;span style="color: #006080;"&gt;"romar.txt"&lt;/span&gt;);&lt;br /&gt;            FileOutputStream out = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; FileOutputStream(file, true);&lt;br /&gt;            out.write(text.getBytes());&lt;br /&gt;            out.write(&lt;span style="color: #006080;"&gt;"\n"&lt;/span&gt;.getBytes());&lt;br /&gt;            out.flush();&lt;br /&gt;            out.close();    &lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; true;&lt;br /&gt;            &lt;br /&gt;        } &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (Exception e) {&lt;br /&gt;            Log.e(TAG, e.toString());&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * Faz a leitura do arquivo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @return O texto lido.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @throws FileNotFoundException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @throws IOException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; String ReadFile() &lt;span style="color: #0000ff;"&gt;throws&lt;/span&gt; FileNotFoundException, IOException{&lt;br /&gt;        File textfile = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; File(context.getExternalFilesDir(null),&lt;br /&gt;            &lt;span style="color: #006080;"&gt;"romar.txt"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        FileInputStream input = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; FileInputStream(textfile);&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;)textfile.length()];&lt;br /&gt;        &lt;br /&gt;        input.read(buffer);            &lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; String(buffer);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; getStateSDcard(){&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #008000;"&gt;// Obtêm o status do cartão SD&lt;/span&gt;&lt;br /&gt;        String status = Environment.getExternalStorageState();&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_BAD_REMOVAL.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Midia foi removida antes de ser montada&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = false;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia removida."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_CHECKING.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Midia está presente e está sendo feita a verificação&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = true;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia sendo verificada."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_MOUNTED.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia está presente e montada neste momento com&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// permissão de escrita e leitura&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = true;&lt;br /&gt;            sdCardWritableReadable = true;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia com permissão de escrita e leitura."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_MOUNTED_READ_ONLY.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia está presente e montada neste momento com &lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// permissão somente de leitura&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = true;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia com permissão somente leitura."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_NOFS.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia está presente, mas está vazia ou utilizando um&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// sistema de arquivos não suportado    &lt;/span&gt;&lt;br /&gt;            sdCardAvailable = false;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia com sistema de arquivos não compatível."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_REMOVED.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia não está presente&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = false;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia não presente."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_SHARED.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia está presente, não montada e compartilhada &lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// via USB&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = false;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia compartilhada via USB."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_UNMOUNTABLE.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia está presente mas não pode ser montada&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = false;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia não pode ser montada"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Environment.MEDIA_UNMOUNTED.equals(status)) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// A midia está presente mas não montada&lt;/span&gt;&lt;br /&gt;            sdCardAvailable = false;&lt;br /&gt;            sdCardWritableReadable = false;&lt;br /&gt;            sdCardReadableOnly = false;&lt;br /&gt;            Log.d(TAG, &lt;span style="color: #006080;"&gt;"Midia não montada."&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; isSdCardAvailable() {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; sdCardAvailable;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; setSdCardAvailable(&lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; sdCardAvailable) {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.sdCardAvailable = sdCardAvailable;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; isSdCardWritableReadable() {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; sdCardWritableReadable;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; setSdCardWritableReadable(&lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; sdCardWritableReadable) {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.sdCardWritableReadable = sdCardWritableReadable;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; isSdCardReadableOnly() {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; sdCardReadableOnly;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; setSdCardReadableOnly(&lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; sdCardReadableOnly) {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.sdCardReadableOnly = sdCardReadableOnly;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;





&lt;p&gt;No método &lt;strong&gt;getStateSDcard()&lt;/strong&gt; foi utilizado o método &lt;strong&gt;getExternalStorageState()&lt;/strong&gt; da classe &lt;strong&gt;Environment&lt;/strong&gt; do Android que retorna o estado do cartão SD. Para cada estado retornado é setado um flag para indicar se o cartão está disponível, se permite escrita e leitura, ou se permite somente somente leitura.&lt;/p&gt;

&lt;p&gt;No método&lt;strong&gt; WriteFile()&lt;/strong&gt; foi utilizado o método &lt;strong&gt;getExternalFilesDir()&lt;/strong&gt; do Android para obter o diretório do cartão SD. Foi passado o valor &lt;em&gt;null&lt;/em&gt; como parâmetro, para que seja retornada a raiz do diretório da aplicação na área de armazenamento externa, no nosso caso o cartão SD (válido para a API 8, vide nota abaixo).&lt;/p&gt;

&lt;p&gt;O arquivo vai ser escrito no diretório:&lt;/p&gt;
&lt;code&gt;/Android/data/&lt;em&gt;&amp;lt;nome_pacote&amp;gt;&lt;/em&gt;/files/&lt;/code&gt; 

&lt;p&gt;onde &lt;code&gt;nome_pacote&lt;/code&gt; é o pacote da aplicação, no nosso caso br.com.romar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;NOTA:&lt;/font&gt;&lt;/strong&gt; O método &lt;strong&gt;getExternalFilesDir()&lt;/strong&gt; deve ser utilizado em projetos que rodam a partir da API 8. Para projetos que rodam na API 7 ou inferior, deverá ser utilizado o método &lt;strong&gt;getExternalStorageDirectory()&lt;/strong&gt;, que irá retornar a raiz do diretório do cartão SD. Neste caso o arquivo será gravado na raiz do cartão e não no diretório da aplicação. No caso da API 8, quando a aplicação for desinstalada os arquivos que estiverem no cartão SD no diretório /Android/data/&amp;lt;nome_pacote&amp;gt;/files serão apagados.&lt;/p&gt;

&lt;p&gt;No método &lt;strong&gt;ReadFile()&lt;/strong&gt; foi utilizado o mesmo método&amp;#160; &lt;strong&gt;getExternalFilesDir()&lt;/strong&gt; do Android para abrir o arquivo gravado anteriormente para leitura.&lt;/p&gt;

&lt;p&gt;Na Activity principal do projeto foi criado um botão para escrita e leitura do arquivo. Segue o código que trata o click em cada um dos botões:&lt;/p&gt;



&lt;div id="codeSnippetWrapper"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; onClick(View v) {&lt;br /&gt;    &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt; {&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt; (v.getId()) {&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; R.id.btnRead: &lt;span style="color: #008000;"&gt;// Faz a leitura do arquivo    &lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #008000;"&gt;// Verifica se o sdcard tem permissão para leitura&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (managefile.isSdCardAvailable() &amp;amp;&amp;amp; &lt;br /&gt;                (managefile.isSdCardReadableOnly() || &lt;br /&gt;                        managefile.isSdCardWritableReadable())) {&lt;br /&gt;            managefile.getStateSDcard();&lt;br /&gt;            textRead.setText(managefile.ReadFile());                    &lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; {&lt;br /&gt;            Toast.makeText(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, &lt;br /&gt;                &lt;span style="color: #006080;"&gt;"O cartão SD não está disponível, ou não permite"&lt;/span&gt; +&lt;br /&gt;                &lt;span style="color: #006080;"&gt;" leitura"&lt;/span&gt;, Toast.LENGTH_SHORT).show();&lt;br /&gt;        }            &lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; R.id.btnWrite: &lt;span style="color: #008000;"&gt;// Faz a escrita do arquivo&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #008000;"&gt;// Verifica se o sdcard tem permissão para escrita&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (managefile.isSdCardAvailable() &amp;amp;&amp;amp;&lt;br /&gt;                managefile.isSdCardWritableReadable()) {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Avisa o usuário se a gravação foi bem sucedida&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(managefile.WriteFile(editText.getText().toString()) == &lt;br /&gt;                true){&lt;br /&gt;                Toast.makeText(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, &lt;br /&gt;                    &lt;span style="color: #006080;"&gt;"Texto gravado com sucesso."&lt;/span&gt;,&lt;br /&gt;                    Toast.LENGTH_SHORT).show();&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;{&lt;br /&gt;                Toast.makeText(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, &lt;br /&gt;                    &lt;span style="color: #006080;"&gt;"Não foi possível escrever o texto."&lt;/span&gt;, &lt;br /&gt;                    Toast.LENGTH_SHORT).show();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; {&lt;br /&gt;            Toast.makeText(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, &lt;br /&gt;                    &lt;span style="color: #006080;"&gt;"O cartão SD não está disponível, &lt;br /&gt;                    ou não permite"&lt;/span&gt; +&lt;br /&gt;                    &lt;span style="color: #006080;"&gt;" escrita."&lt;/span&gt;, Toast.LENGTH_SHORT).show();                    &lt;br /&gt;        }        &lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #008000;"&gt;// Reseta o campo do texto&lt;/span&gt;&lt;br /&gt;        editText.setText(&lt;span style="color: #006080;"&gt;""&lt;/span&gt;);&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;        &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;default&lt;/span&gt;:&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;} &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (FileNotFoundException e) {&lt;br /&gt;    Log.e(TAG, e.toString());&lt;br /&gt;} &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (IOException e) {&lt;br /&gt;    Log.e(TAG, e.toString());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;




&lt;p&gt;Antes de fazer a escrita ou leitura no arquivo, o código verifica primeiro se o cartão SD está disponível e permite escrita ou leitura dependendo do caso.&lt;/p&gt;

&lt;p&gt;O cartão SD do dispositivo por padrão possui somente permissão de leitura. Para que seja possível escrever no cartão é necessário que no momento da instalação da aplicação o usuário dê a permissão de escrita na área de armazenamento externo. Para que a aplicação tenha a permissão de escrita é necessário inserir no arquivo AndroidManifest.xml da aplicação a seguinte tag: &lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-3407041001161172740?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GQm-9-lYMvnsiK5oof98TN1uaNc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GQm-9-lYMvnsiK5oof98TN1uaNc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GQm-9-lYMvnsiK5oof98TN1uaNc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GQm-9-lYMvnsiK5oof98TN1uaNc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/9VBNw6i0rkE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/3407041001161172740/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/03/escrita-e-leitura-de-arquivo-no.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/3407041001161172740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/3407041001161172740?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/9VBNw6i0rkE/escrita-e-leitura-de-arquivo-no.html" title="Escrita e Leitura de Arquivo no Android–Parte II" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_BdopzjPwxSA/TXl0kCaGP5I/AAAAAAAAAGE/QqNEn2BCv-I/s72-c/arquivo1_thumb1.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/03/escrita-e-leitura-de-arquivo-no.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04NRXc-cSp7ImA9WhdbFE8.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-857618018921568753</id><published>2011-02-24T22:42:00.001-03:00</published><updated>2011-10-12T10:26:34.959-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T10:26:34.959-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Escrita e Leitura de Arquivo no Android – Parte I</title><content type="html">&lt;p&gt;Os dispositivos com o Android permitem a escrita e leitura de arquivos na memória interna. Este post descreve como criar um arquivo texto, escrever e visualizar o conteúdo do arquivo no próprio dispositivo e como exportar o arquivo do emulador do Eclipse para o computador.&lt;/p&gt; &lt;p&gt;Como cada aplicação do Android roda em seu próprio contexto, o arquivo só pode ser manipulado pela própria aplicação que criou o arquivo. O arquivo não é visualizado por outras aplicações e não pode ser manipulado pelo usuário.&lt;/p&gt; &lt;p&gt;O projeto utilizado para demonstrar a escrita e leitura do arquivo possui uma Activity com o seguinte layout:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/TWcI7R6gSFI/AAAAAAAAAFM/reQ7own9iUM/s1600-h/arquivo1%5B11%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="arquivo1" border="0" alt="arquivo1" src="http://lh5.ggpht.com/_BdopzjPwxSA/TWcI8FEBaII/AAAAAAAAAFQ/wlPqaLgrHBs/arquivo1_thumb%5B8%5D.png?imgmax=800" width="324" height="484"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Foi criada uma classe chamada&lt;strong&gt; ManageFile&lt;/strong&gt; com os métodos &lt;strong&gt;WriteFile&lt;/strong&gt; e &lt;strong&gt;ReadFile&lt;/strong&gt;, que fazem a escrita e leitura do arquivo.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"&gt;&lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt; * Classe responsável pela escrita e leitura de arquivo.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt; * @author Romar Consultoria&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; ManageFile {&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; String TAG = &lt;span style="color: #006080;"&gt;"ManageFile"&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; Context context;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; ManageFile(Context context){&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.context = context;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * Escreve no arquivo texto.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @param text Texto a ser escrito.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @return True se o texto foi escrito com sucesso.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; WriteFile(String text){&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt; {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Abre o arquivo para escrita ou cria se não existir&lt;/span&gt;&lt;br /&gt;            FileOutputStream out = context.openFileOutput(&lt;span style="color: #006080;"&gt;"romar.txt"&lt;/span&gt;,&lt;br /&gt;                    Context.MODE_APPEND);&lt;br /&gt;            out.write(text.getBytes());&lt;br /&gt;            out.write(&lt;span style="color: #006080;"&gt;"\n"&lt;/span&gt;.getBytes());&lt;br /&gt;            out.flush();&lt;br /&gt;            out.close();    &lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; true;&lt;br /&gt;            &lt;br /&gt;        } &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (Exception e) {&lt;br /&gt;            Log.e(TAG, e.toString());&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * Faz a leitura do arquivo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @return O texto lido.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @throws FileNotFoundException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     * @throws IOException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; String ReadFile() &lt;span style="color: #0000ff;"&gt;throws&lt;/span&gt; FileNotFoundException, IOException{&lt;br /&gt;        File file = context.getFilesDir();&lt;br /&gt;        File textfile = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; File(file + &lt;span style="color: #006080;"&gt;"/romar.txt"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        FileInputStream input = context.openFileInput(&lt;span style="color: #006080;"&gt;"romar.txt"&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;)textfile.length()];&lt;br /&gt;        &lt;br /&gt;        input.read(buffer);            &lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; String(buffer);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Observe que no construtor da classe foi passado o argumento &lt;strong&gt;context&lt;/strong&gt; da aplicação para que seja possível manipular o arquivo no contexto da aplicação.&lt;/p&gt;
&lt;p&gt;O método &lt;strong&gt;writeFile&lt;/strong&gt; tem como argumento o texto a ser escrito e utiliza o método &lt;strong&gt;openFileOutput&lt;/strong&gt; para criar se o arquivo não existir ou abrir o arquivo anteriormente criado.&lt;/p&gt;
&lt;p&gt;O método &lt;strong&gt;readFile&lt;/strong&gt; busca pelo arquivo (romar.txt) criado anteriormente, faz a leitura do arquivo e retorna uma String com o conteúdo.&lt;/p&gt;
&lt;p&gt;Na Activity do projeto foram criados dois botões Ler e Escrever que fazem a chamada dos métodos de escrita e leitura do arquivo:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"&gt;@Override&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; onClick(View v) {&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt; {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt; (v.getId()) {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; R.id.btnRead:&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Faz a leitura do arquivo&lt;/span&gt;&lt;br /&gt;            ManageFile fileread = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ManageFile(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;);&lt;br /&gt;                textRead.setText(fileread.ReadFile());&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; R.id.btnWrite:&lt;br /&gt;            ManageFile filewrite = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ManageFile(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;);&lt;br /&gt;            &lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Avisa o usuário se a gravação foi bem sucedida&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(filewrite.WriteFile(editText.getText().toString())&lt;br /&gt;                 == true){&lt;br /&gt;                Toast.makeText(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;,&lt;br /&gt;                    &lt;span style="color: #006080;"&gt;"Texto gravado com sucesso."&lt;/span&gt;,&lt;br /&gt;                    Toast.LENGTH_SHORT).show();&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;{&lt;br /&gt;                Toast.makeText(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, &lt;br /&gt;                    &lt;span style="color: #006080;"&gt;"Não foi possível escrever o texto."&lt;/span&gt;, &lt;br /&gt;                    Toast.LENGTH_SHORT).show();&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            &lt;span style="color: #008000;"&gt;// Reseta o campo do texto&lt;/span&gt;&lt;br /&gt;            editText.setText(&lt;span style="color: #006080;"&gt;""&lt;/span&gt;);&lt;br /&gt;            &lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;            &lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;default&lt;/span&gt;:&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    &lt;br /&gt;    } &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (FileNotFoundException e) {&lt;br /&gt;        Log.e(TAG, e.toString());&lt;br /&gt;    } &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (IOException e) {&lt;br /&gt;        Log.e(TAG, e.toString());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;

&lt;p&gt;A aplicação funcionando apresenta a seguinte tela:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/TWcI8hArLzI/AAAAAAAAAFU/ew7xh6ZPJEM/s1600-h/arquivo2%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="arquivo2" border="0" alt="arquivo2" src="http://lh4.ggpht.com/_BdopzjPwxSA/TWcI9Fiw8-I/AAAAAAAAAFY/DbyFbTxP8-M/arquivo2_thumb%5B1%5D.png?imgmax=800" width="324" height="484"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;É possível exportar o arquivo (romar.txt) para o computador, através do emulador do Eclipse utilizando a perspectiva DDMS, na aba File Explorer que exibe o conteúdo nos diretórios do dispositivo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/TWcI9lDzkFI/AAAAAAAAAFc/SqeNqFTJQvY/s1600-h/arquivo3%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="arquivo3" border="0" alt="arquivo3" src="http://lh3.ggpht.com/_BdopzjPwxSA/TWcI-Mv7-pI/AAAAAAAAAFg/gjc4jmk8Xy4/arquivo3_thumb%5B1%5D.png?imgmax=800" width="638" height="341"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;No diretório&lt;strong&gt; data/data/nome_do_pacote/files&lt;/strong&gt; fica localizado os arquivos, criados dentro do contexto da aplicação. Para exportar o arquivo selecionar o botão indicado pela seta e gravar o arquivo no computador. Mas lembre-se o acesso a este arquivo só é possível via emulador, no dispositivo real não é possível acessar este arquivo.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-857618018921568753?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_2uJnYjtW_pZ9CRNHlHAasQa8hc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_2uJnYjtW_pZ9CRNHlHAasQa8hc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_2uJnYjtW_pZ9CRNHlHAasQa8hc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_2uJnYjtW_pZ9CRNHlHAasQa8hc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/qCySDGxnHqg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/857618018921568753/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2011/02/escrita-e-leitura-na-memoria-interna-do.html#comment-form" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/857618018921568753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/857618018921568753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/qCySDGxnHqg/escrita-e-leitura-na-memoria-interna-do.html" title="Escrita e Leitura de Arquivo no Android – Parte I" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_BdopzjPwxSA/TWcI8FEBaII/AAAAAAAAAFQ/wlPqaLgrHBs/s72-c/arquivo1_thumb%5B8%5D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2011/02/escrita-e-leitura-na-memoria-interna-do.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMSXg-cCp7ImA9Wx5QGUQ.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-2107908668931165826</id><published>2010-09-08T22:11:00.001-03:00</published><updated>2010-09-08T22:11:28.658-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-08T22:11:28.658-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Insert, Update e Delete com LINQ</title><content type="html">&lt;p&gt;Em um dos projetos que estive trabalhando, precisei interagir com uma Base de Dados que possuia tabelas sem chave primária, e por motivos de compatibilidade com projetos anteriores não podia alterar as tabelas para adequar as boas práticas de desenvolvimento e inserir as chaves primárias.&lt;/p&gt; &lt;p&gt;No meu projeto eu precisava inserir, deletar e fazer atualizações nos registros das tabelas. Resolvi utilizar o LINQ para fazer estas operações.&lt;/p&gt; &lt;p&gt;O LINQ não permite a inserção, exclusão e atualização em tabelas que não possuam chave primária, por isso tive que utilizar um recurso para poder trabalhar com estas tabelas.&lt;/p&gt; &lt;p&gt;Criei uma base de dados com uma tabela exemplo sem chave primária, para poder demonstrar uma forma de resolver este tipo de problema. A base de dados chama-se Escola e a tabela Aluno.&lt;/p&gt; &lt;p&gt;Criei a classe DBML no Visual Studio que tem o seguinte formato:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_BdopzjPwxSA/TIg0Mhjo6LI/AAAAAAAAAEo/hotrqRWaaUU/s1600-h/AlunoDbml5.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="AlunoDbml" border="0" alt="AlunoDbml" src="http://lh4.ggpht.com/_BdopzjPwxSA/TIg0NbluD1I/AAAAAAAAAEs/PIfhhFRDoTg/AlunoDbml_thumb1.jpg?imgmax=800" width="217" height="192"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Para inserir o registro de um aluno na tabela podemos utilizar o seguinte código:&lt;/p&gt; &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Executa uma instrucao Insert inserindo um aluno na&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; base de dados.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Insert()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt; context = &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Aluno&lt;/span&gt; aluno = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Aluno&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aluno.Matricula = &lt;span style="color: #a31515"&gt;"67489"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aluno.Nome = &lt;span style="color: #a31515"&gt;"Douglas Xavier"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aluno.Idade = 35;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aluno.Curso = &lt;span style="color: #a31515"&gt;"SQL Server"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aluno.Endereco = &lt;span style="color: #a31515"&gt;"Rua Germano Souza, 675"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Alunos.InsertOnSubmit(aluno);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.SubmitChanges();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Aluno inserido com sucesso!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; ex)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(ex.Message);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Executando o método Insert() o aluno não é inserido na tabela e obtemos a seguinte mensagem de erro:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can’t perform Create, Update or Delete Operations on Table(Aluno) because it has no primary key.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A mensagem indica que o LINQ não permite a inserção, exclusão ou atualização de registros em tabelas que não possuam chave primária.&lt;/p&gt;
&lt;p&gt;Se testarmos o método Delete(), cujo código é exibido abaixo, obtemos a mesma mensagem de erro do método Insert():&lt;/p&gt;
&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Executa uma instrucao Delete, apagando os dados de um aluno.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Delete()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Aluno&lt;/span&gt; aluno = (&lt;span style="color: blue"&gt;from&lt;/span&gt; a &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Alunos&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;where&lt;/span&gt; a.Idade == 22&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;select&lt;/span&gt; a).First();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Alunos.DeleteOnSubmit(aluno);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.SubmitChanges();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"O aluno foi apagado com sucesso!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; ex)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(ex.Message);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Se testarmos o método Update(), cujo código é exibido abaixo, a atualização não será feita pois o método de Update do LINQ não gera exceção, por isso é muito dificil detectar qual problema está acontecendo, já que a atualização não é feita e nenhuma exceção é indicada.&lt;/p&gt;
&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Executa uma instrucao Update atualizando um endereco de &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; um determinado aluno&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Update()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Aluno&lt;/span&gt; aluno = (&lt;span style="color: blue"&gt;from&lt;/span&gt; a &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Alunos&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;where&lt;/span&gt; a.Nome == &lt;span style="color: #a31515"&gt;"Renato Borges"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;select&lt;/span&gt; a).First();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aluno.Endereco = &lt;span style="color: #a31515"&gt;"Av Otaviano Silva, 47"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.SubmitChanges();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"A atualização foi realizada com"&lt;/span&gt; +&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515"&gt;" sucesso!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; ex)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(ex.Message);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Como resolver este problema se não podemos mexer na estrutura da tabela do banco de dados? A solução é criar uma chave primária na classe DBML. Esta chave pode ser definida em qualquer coluna. Esta definição não afeta a estrutura da tabela na base de dados, é somente um recurso para podermos trabalhar com LINQ em tabelas sem chave primária.&lt;/p&gt;
&lt;p&gt;Para inserir uma chave primária em uma coluna da tabela Aluno, devemos alterar a propriedade &lt;strong&gt;PrimaryKey&lt;/strong&gt; de False para True da coluna que servirá como chave primária.&lt;/p&gt;
&lt;p&gt;Selecionei a coluna Matricula para servir de chave primária. Veja a figura abaixo de como ficou a definição da classe DBML.&lt;/p&gt;
&lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="ChavePrimaria" border="0" alt="ChavePrimaria" src="http://lh4.ggpht.com/_BdopzjPwxSA/TIg0N2awVpI/AAAAAAAAAEw/nNlo_zOa8ww/ChavePrimaria%5B5%5D.jpg?imgmax=800" width="498" height="230"&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Após a configuração da chave primária os métodos Insert(), Update() e Delete() podem ser executados.&lt;/p&gt;
&lt;p&gt;Inseri o código para fazer um Select na tabela e visualizar todos os métodos sendo executados sem erros.&lt;/p&gt;
&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;pre style="margin: 0px"&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Executa uma instrucao Select na base de dados.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Select()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green"&gt;// Cria a conexão com a base de dados Escola&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EscolaClassesDataContext&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green"&gt;// Faz um SELECT na base de dados para imprimr a relação de alunos&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;var&lt;/span&gt; queryAlunos = &lt;span style="color: blue"&gt;from&lt;/span&gt; a &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Alunos&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;select&lt;/span&gt; a;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt; (queryAlunos.Count() &amp;gt; 0)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; queryAlunos)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"========================================="&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Matrícula: "&lt;/span&gt; + item.Matricula);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Nome: "&lt;/span&gt; + item.Nome);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Idade: "&lt;/span&gt; + item.Idade);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Curso: "&lt;/span&gt; + item.Curso);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Endereço: "&lt;/span&gt; + item.Endereco);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"=======================================\r\n"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;O código que utilizei no projeto para chamar todos os métodos foi:&lt;/p&gt;
&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Executa o método Insert"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Insert();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Executa o método Update"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Update();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Executa o método Delete"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delete();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Executa o método Select"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadKey();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Segue a tela com o resultado dos métodos executados com sucesso:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/TIg0OyDoDSI/AAAAAAAAAE0/dMN5_JeNu0Y/s1600-h/Resultado%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Resultado" border="0" alt="Resultado" src="http://lh5.ggpht.com/_BdopzjPwxSA/TIg0Ph8OaJI/AAAAAAAAAE4/VJq41IRmlus/Resultado_thumb%5B2%5D.jpg?imgmax=800" width="434" height="437"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Os conceitos utilizados nos métodos Insert(), Update() e Delete() mostrados neste post podem ser utilizados normalmente, apenas acrescentei uma possível solução para o problema de precisar trabalhar com tabelas sem chaves primárias.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-2107908668931165826?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xMkGFy6CQtk9EExAaMR7OLHCdvM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xMkGFy6CQtk9EExAaMR7OLHCdvM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xMkGFy6CQtk9EExAaMR7OLHCdvM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xMkGFy6CQtk9EExAaMR7OLHCdvM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/51oZvMW193U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/2107908668931165826/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2010/09/insert-update-e-delete-com-linq.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2107908668931165826?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2107908668931165826?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/51oZvMW193U/insert-update-e-delete-com-linq.html" title="Insert, Update e Delete com LINQ" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_BdopzjPwxSA/TIg0NbluD1I/AAAAAAAAAEs/PIfhhFRDoTg/s72-c/AlunoDbml_thumb1.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2010/09/insert-update-e-delete-com-linq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4BQ3s9eyp7ImA9Wx5TGEU.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-2603587385819189962</id><published>2010-08-03T22:22:00.001-03:00</published><updated>2010-08-03T22:22:32.563-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-03T22:22:32.563-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WebService" /><title>Debug de Aplicação ASP.NET 2.0 no IIS7</title><content type="html">&lt;p&gt;Durante o debug de uma aplicação web ocorreu o seguinte erro quando&amp;#160; o projeto estava configurado para rodar utilizando o localhost ao invés do servidor web do próprio VS2005 em uma máquina utilizando o IIS7:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Unable to start debugging on the server. Debugging failed because integrated Windows Authentication is not enabled.&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para habilitar o Windows Authentication no IIS7 proceder da seguinte forma:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;Com o IIS7 aberto selecione o website publicado e dê um duplo clique no ícone Autenticações indicado na figura abaixo.&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Capture" border="0" alt="Capture" src="http://lh6.ggpht.com/_BdopzjPwxSA/TFjA1jZ_FbI/AAAAAAAAAEc/nMV8jyZ-k5g/Capture_thumb%5B4%5D.jpg?imgmax=800" width="304" height="206" /&gt;&amp;#160;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;No item &lt;strong&gt;Autenticação do Windows&lt;/strong&gt; selecione a Ação Habilitar.&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Isto resolveu o problema da minha aplicação não conseguir rodar em modo Debug.&lt;/p&gt;  &lt;p&gt;Depois de efetuada esta configuração quando rodei a aplicação obtive uma página de erro HTTP 403.14 não exibindo a minha aplicação que no caso era um webservice.&lt;/p&gt;  &lt;p&gt;Para resolver este problema descobri que faltava a tag &amp;lt;system.webServer&amp;gt; que em aplicações .NET 3.5 já é incluída automaticamente pelo VS2008 e é obrigatória para rodar aplicações ASP.NET AJAX em IIS7, mas descobri que é necessária inclusive para aplicações não AJAX, no meu caso estava trabalhando com um WebService em .NET 2.0.&lt;/p&gt;  &lt;p&gt;Portanto para resolver o meu problema inseri a seguinte configuração no meu web.config e a partir daí consegui rodar a aplicação no VS2005 utilizando o IIS7.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.webServer&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;validation&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;validateIntegratedModeConfiguration&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;modules&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptModule&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptModule&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;preCondition&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;managedHandler&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;modules&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;handlers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;WebServiceHandlerFactory-Integrated&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptHandlerFactory&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptHandlerFactoryAppServices&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptResource&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptHandlerFactory&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;verb&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;*.asmx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;preCondition&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;integratedMode&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptHandlerFactoryAppServices&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;verb&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;*_AppService.axd&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;preCondition&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;integratedMode&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptResource&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;preCondition&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;integratedMode&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;verb&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GET,HEAD&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ScriptResource.axd&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;handlers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.webServer&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-2603587385819189962?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T8T3QEGoGlr19-jDUgLurFwBLvA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T8T3QEGoGlr19-jDUgLurFwBLvA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T8T3QEGoGlr19-jDUgLurFwBLvA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T8T3QEGoGlr19-jDUgLurFwBLvA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/e-XUZANFCIY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/2603587385819189962/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2010/08/debug-de-aplicacao-aspnet-20-no-iis7.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2603587385819189962?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2603587385819189962?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/e-XUZANFCIY/debug-de-aplicacao-aspnet-20-no-iis7.html" title="Debug de Aplicação ASP.NET 2.0 no IIS7" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_BdopzjPwxSA/TFjA1jZ_FbI/AAAAAAAAAEc/nMV8jyZ-k5g/s72-c/Capture_thumb%5B4%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2010/08/debug-de-aplicacao-aspnet-20-no-iis7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8ASHc7eCp7ImA9WxBUGE4.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-742185569166039345</id><published>2010-03-05T21:54:00.001-03:00</published><updated>2010-03-05T21:54:09.900-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-05T21:54:09.900-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><title>Introdução ao Windows Mobile</title><content type="html">&lt;p&gt;O Windows Mobile é um sistema operacional reduzido e muito eficiente para rodar em dispositivos móveis de pequeno porte. O Windows Mobile é construído sobre o Windows CE. Os fabricantes incluem os seus próprios softwares e add ons como o Internet Explorer, Word, Excel, Power Point, etc.&lt;/p&gt;  &lt;p&gt;O Windows Mobile nasceu com a versão 2003 do Visual Studio, onde tinhamos, o .NET Compact Framework 1.1. Atualmente existem algumas versões de Windows Mobile, temos o Windows Mobile 5.0 e o 6.0 que utilizam o .NET Compact Framework 2.0.&lt;/p&gt;  &lt;p&gt;Até o Visual Studio 2005, para se desenvolver uma aplicação Windows Mobile era necessário utilizar pelo menos a versão Professional que permitia o desenvolvimento de aplicações Windows Mobile 2003, e para desenvolver aplicações Mobile 5.0 era necessário fazer o download do SDK de desenvolvimento para a plataforma Windows Mobile 5.0. Este SDK permitia o desenvolvimento de aplicações PockePC, Smartphone e Windows CE. &lt;/p&gt;  &lt;p&gt;A partir do Visual Studio 2008 já está integrado o ambiente para desenvolvimento de aplicações PocketPC 2003, Windows CE, Windows Mobile 5.0 PocketPC SDK e Windows Mobile 5.0 Smartphone SDK. Para a versão Windows Mobile 6.0 é necessário fazer o download separadamente do SDK.&lt;/p&gt;  &lt;p&gt;O Visual Studio 2008 permite o desenvolvimento para plataformas .NET Compact Framework 2.0 ou 3.5.&lt;/p&gt;  &lt;p&gt;O desenvolvimento para Windows Mobile se tornou um pouco mais complicado para os desenvolvedores devido à mudança nos termos de licença de uso. Antigamente os termos de licença eram bem restritos, por exemplo o tamanho da tela tinha um padrão de 240 x 320 pixels, atualmente o exigido é manter um mínimo de compatibilidade entre os fabricantes e os softwares devem rodar em qualquer dispositivo.&lt;/p&gt;  &lt;p&gt;Para iniciar um projeto Windows Mobile utilizando o Visual Studio 2008 selecione o menu FILE-NEW PROJECT e na tela &lt;b&gt;New Project&lt;/b&gt; selecione &lt;b&gt;Smart Device Project&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/S5Gnlism2lI/AAAAAAAAAD8/xTRUk97K3Sk/s1600-h/image4.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_BdopzjPwxSA/S5GnnJiYMhI/AAAAAAAAAEA/Trp0Gc81kQk/image_thumb2.png?imgmax=800" width="605" height="420" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Após a seleção do Smart Device Project será apresentada a tela &lt;b&gt;Add New Smart Device Project Target Plataform&lt;/b&gt;, onde é possível selecionar a plataforma desejada e a versão do .NET Compact Framework que será utilizada.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/S5GnoBraGeI/AAAAAAAAAEE/jzAzg_ok5RU/s1600-h/image17.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_BdopzjPwxSA/S5GnpihDOxI/AAAAAAAAAEI/Qf75IwyKBrg/image_thumb9.png?imgmax=800" width="613" height="471" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Entre as plataformas podemos selecionar entre o PocketPC2003, Windows CE, Windows Mobile5.0 Pocket PC SDK ou Windows Mobile 5.0 Smartphone SDK.&lt;/p&gt;  &lt;p&gt;Utilizando esta tela também é possível fazer o download do SDK e de emuladores de outras plataformas, tais como o Windows Mobile 6.0. Para verificar as opções e fazer o download de outras plataformas selecione o link &lt;b&gt;Download additional emulator images and smart device SDKs..&lt;/b&gt;, no final da tela. &lt;/p&gt;  &lt;p&gt;Após selecionada a plataforma e a versão do .NET Compact Framework selecione o template &lt;b&gt;Device Application&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;O Visual Studio cria o projeto com a tela da plataforma selecionada. A figura abaixo mostra o formulário de um Pocket PC para o Windows Mobile 5.0.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/S5GnqSamNNI/AAAAAAAAAEM/clHkmeFFjUQ/s1600-h/image13.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_BdopzjPwxSA/S5GnrNLXk9I/AAAAAAAAAEQ/yj5UGPa__xs/image_thumb7.png?imgmax=800" width="218" height="328" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A aplicação Windows Mobile é similar a aplicação Windows Desktop com alguns diferenciais em termos de programação, capacidade e layout.&lt;/p&gt;  &lt;p&gt;Um diferencial importante é quanto à quantia de controles disponíveis para a plataforma Windows Mobile. Se compararmos com a plataforma Windows para Desktop que utiliza o .NET Framework iremos observar que vários controles não estão disponíveis e quando disponíveis normalmente não possuem todas as propriedades que o .NET Framework disponibiliza. Isto ocorre porque o .NET Compact Framework teve que ser reduzido para poder funcionar em dispositivos com menor capacidade de hardware comparado com os computadores e muitos controles realmente não fazem sentido em ser utilizado em dispositivos móveis como,ToolTip, EventLog, controles para Impressão e outros.&lt;/p&gt;  &lt;p&gt;Um outro diferencial importante é com relação a forma que a aplicação é “encerrada” em dispositivos móveis. Observando a figura anterior podemos observar a existência de um botão com um “X”, no canto superior direito da tela do dispositivo. Este botão não encerra a aplicação e sim somente minimiza “esconde” a aplicação. &lt;/p&gt;  &lt;p&gt;Em dispositivos móveis o padrão de funcionamento é minimizar a aplicação ao invés de encerrar. Isto ocorre porque em dispositivos móveis a iniciação de uma aplicação normalmente demora alguns segundos e o usuário de um dispositivo móvel espera clicar na aplicação e a mesma “aparecer” instantaneamente. &lt;/p&gt;  &lt;p&gt;Caso seja absolutamente necessário fechar a aplicação ao invés de minimizar a propriedade &lt;b&gt;MinimizeBox&lt;/b&gt; do formulário deve ser configurada como &lt;b&gt;False&lt;/b&gt; e neste caso o formulário vai apresentar o botão &lt;b&gt;OK&lt;/b&gt;, que fecha a aplicação.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/S5Gnrl6o3xI/AAAAAAAAAEU/b33ficF-RyA/s1600-h/image16.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_BdopzjPwxSA/S5GnsBZe5YI/AAAAAAAAAEY/8Mlrs8SDLCg/image_thumb8.png?imgmax=800" width="244" height="124" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;O comportamento descrito acima ocorre em formulários que são exibidos utilizando o método &lt;i&gt;Form.Show()&lt;/i&gt;. No caso de utilizar o método &lt;i&gt;Form.ShowDialog()&lt;/i&gt; o comportamento do formulário será idêntico ao comportamento do formulário no desktop, ou seja, será apresentado o botão OK e quando acionado o formulário será fechado.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-742185569166039345?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z3899foHfD1teu39RG5yuaQ8CNU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z3899foHfD1teu39RG5yuaQ8CNU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z3899foHfD1teu39RG5yuaQ8CNU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z3899foHfD1teu39RG5yuaQ8CNU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/UOpfbBFQlew" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/742185569166039345/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2010/03/introducao-ao-windows-mobile.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/742185569166039345?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/742185569166039345?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/UOpfbBFQlew/introducao-ao-windows-mobile.html" title="Introdução ao Windows Mobile" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_BdopzjPwxSA/S5GnnJiYMhI/AAAAAAAAAEA/Trp0Gc81kQk/s72-c/image_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2010/03/introducao-ao-windows-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQCSXw9cSp7ImA9WxBTF0U.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-3453617030135387372</id><published>2009-11-27T22:43:00.001-02:00</published><updated>2009-12-14T08:59:28.269-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-14T08:59:28.269-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Tipos de LINQ</title><content type="html">&lt;p&gt;O LINQ é um modelo de programação que introduz a consulta e manipulação de dados dentro do conceito da linguagem .NET. Entretanto o suporte completo ao LINQ requer algumas extensões na linguagem utilizada.&lt;/p&gt;  &lt;p&gt;O código abaixo exibe um exemplo de utilização do LINQ para fazer uma consulta na tabela Customers da base de dados Northwind.&lt;/p&gt;  &lt;div style="font-family: courier new; color: black; font-size: 10pt" 0px;?="0px;?" margin:="margin:"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// DataContext utiliza a connectionstring &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;NorthwindDataContext&lt;/span&gt; db = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NorthwindDataContext&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Seleciona a tabela para executar a consulta&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Table&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;&amp;gt; Customers = db.GetTable&amp;lt;&lt;span style="color: #2b91af"&gt;Customer&lt;/span&gt;&amp;gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Consulta clientes da cidade London&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; query =&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;from&lt;/span&gt; cust &lt;span style="color: blue"&gt;in&lt;/span&gt; Customers&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;where&lt;/span&gt; cust.City == &lt;span style="color: #a31515"&gt;&amp;quot;London&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;select&lt;/span&gt; cust;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Empresa&amp;quot;&lt;/span&gt;.PadRight(25) + &lt;span style="color: #a31515"&gt;&amp;quot;Nome&amp;quot;&lt;/span&gt;.PadRight(25) + &lt;span style="color: #a31515"&gt;&amp;quot;Cidade&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; customer &lt;span style="color: blue"&gt;in&lt;/span&gt; query)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;{0}{1}{2}&amp;quot;&lt;/span&gt;, customer.CompanyName.PadRight(25),&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; customer.ContactName.PadRight(25), customer.City);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadKey(); &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;O resultado do código é:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/SyYafvMhk5I/AAAAAAAAADc/Hi58ID666Pc/s1600-h/Capture14.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Capture1" border="0" alt="Capture1" src="http://lh6.ggpht.com/_BdopzjPwxSA/SyYagQIOEAI/AAAAAAAAADg/x2VIYDdmOi4/Capture1_thumb2.png?imgmax=800" width="551" height="202" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;O código traz os dados de todos os &lt;i&gt;Customers&lt;/i&gt; cuja cidade seja &lt;i&gt;“London”&lt;/i&gt;. A consulta foi feita em uma Base de Dados SQL, mas a mesma consulta poderia ser utilizada se &lt;i&gt;Customer&lt;/i&gt; fosse uma tabela em um DataSet ou uma classe que descreve uma tabela.&lt;/p&gt;  &lt;p&gt;Um outro aspecto importante da integração da linguagem é a checagem de tipo. A sintaxe das expressões de consulta não tem o compromisso da checagem de tipo, pois os dados são sempre fortemente tipados, incluindo as consultas de coleções ou entidades que são lidas ou retornadas.&lt;/p&gt;  &lt;p&gt;Atualmente existem os seguintes tipos de LINQ:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;LINQ to Objects &lt;/li&gt;    &lt;li&gt;LINQ to ADO.NET que inclui LINQ to SQL, LINQ to Dataset e LINQ to Entities &lt;/li&gt;    &lt;li&gt;LINQ to XML &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Cada uma destas implementações é definida através de um conjunto de extensões de métodos que implementam os operadores necessários para que o LINQ rode com uma fonte de dados particular. O acesso destas características é controlado por &lt;em&gt;Namespaces&lt;/em&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;LINQ to Objects&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O &lt;i&gt;LINQ to Object&lt;/i&gt; tem o objetivo de manipular coleções de objetos, que podem estar relacionados entre si de forma hierarquica ou gráfica. O &lt;i&gt;LINQ to Object&lt;/i&gt; não está limitado a coleções de dados gerados pelo usuário. Como exemplo segue uma consulta de todos os arquivos que estão localizados no diretório temporário maiores de 500KB ordenados de forma decrescente:&lt;/p&gt;  &lt;div style="font-family: courier new; color: black; font-size: 10pt" 0px;?="0px;?" margin:="margin:"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)     &lt;p&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; tempPath = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempPath();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DirectoryInfo&lt;/span&gt; dirInfo = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DirectoryInfo&lt;/span&gt;(tempPath);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; query =&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;from&lt;/span&gt; f &lt;span style="color: blue"&gt;in&lt;/span&gt; dirInfo.GetFiles()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;where&lt;/span&gt; f.Length &amp;gt; 500000 &lt;span style="color: green"&gt;// Arquivos maior que 500K&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;orderby&lt;/span&gt; f.Length &lt;span style="color: blue"&gt;descending&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;select&lt;/span&gt; f;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; arq &lt;span style="color: blue"&gt;in&lt;/span&gt; query)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Name = {0}&amp;quot;&lt;/span&gt;, arq.Name);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadKey();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;O resultado do código acima é similar a figura abaixo. O resultado vai depender do conteúdo existente no diretório temporário da máquina que está sendo utilizada.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/SyYahUhsCfI/AAAAAAAAADk/mmcw3JwictU/s1600-h/image14.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_BdopzjPwxSA/SyYaiD4FIXI/AAAAAAAAADo/V1cblL8E1jc/image_thumb8.png?imgmax=800" width="521" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc226906317"&gt;LINQ to ADO.NET&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;O &lt;i&gt;LINQ to ADO.NET&lt;/i&gt; inclui diferentes implementações que compartilham da necessidade de manipular dados relacionais.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;LINQ to SQL&lt;/u&gt;: é um componente do projeto LINQ que tem a capacidade de executar consultas em uma Base de Dados relacional. &lt;/li&gt;    &lt;li&gt;&lt;u&gt;LINQ to Entities&lt;/u&gt;&lt;strong&gt;:&lt;/strong&gt; É muito similar ao LINQ TO SQL, entretanto ao invés de usar uma Base de Dados física como uma camada de persistência, ele usa uma entidade conceitual o EDM (Entity Data Model). O resultado da abstração é uma camada independente da camada de dados física. &lt;/li&gt;    &lt;li&gt;&lt;u&gt;LINQ to DataSet&lt;/u&gt;&lt;strong&gt;:&lt;/strong&gt; Permite fazer consulta em um DataSet. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O código abaixo exemplifica uma consulta feita em um dataset tipado utilizando o LINQ to Dataset:&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Inicializa o TableAdapter da base de dados Northwind&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dsNorthwindTableAdapters.&lt;span style="color: #2b91af"&gt;OrdersTableAdapter&lt;/span&gt; taNorthwind =&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; dsNorthwindTableAdapters.&lt;span style="color: #2b91af"&gt;OrdersTableAdapter&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Declaração do DataSet Tipado da base de dados Northwind&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;dsNorthwind&lt;/span&gt; ds = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;dsNorthwind&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; taNorthwind.Fill(ds.Orders);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Consulta que traz o Id e a data do pedido para pedidos&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// com data superior a 01/01/1998&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; query = &lt;span style="color: blue"&gt;from&lt;/span&gt; o &lt;span style="color: blue"&gt;in&lt;/span&gt; ds.Orders&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;where&lt;/span&gt; o.OrderDate &amp;gt;= &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(1998, 01, 01)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;select&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; { o.OrderID, o.OrderDate };&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Id do Pedido\t&amp;quot;&lt;/span&gt; + &lt;span style="color: #a31515"&gt;&amp;quot;Data do Pedido&amp;quot;&lt;/span&gt;);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; order &lt;span style="color: blue"&gt;in&lt;/span&gt; query)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;{0}\t\t{1}&amp;quot;&lt;/span&gt;, order.OrderID, &lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; order.OrderDate);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadKey();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt; &lt;strong&gt;LINQ to XML&lt;/strong&gt;   &lt;p&gt;O &lt;i&gt;LINQ to XML&lt;/i&gt; oferece uma sintaxe um pouco diferente para operar com dados em XML, permitindo consulta e manipulação de dados. &lt;/p&gt;  &lt;p&gt;O código abaixo exemplifica uma busca no arquivo XML que possui informações sobre uma coleção de livros.&lt;/p&gt;  &lt;p&gt;Arquivo Xml utilizado como fonte da busca:&lt;/p&gt;  &lt;div style="font-family: courier new; color: black; font-size: 10pt" 0px;?="0px;?" margin:="margin:"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; ?&amp;gt;&lt;/span&gt;     &lt;p&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;livros&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;livro&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;linguagem&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;csharp&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;titulo&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Introducao ao CSharp&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;titulo&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;autor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Antonio Dias&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;autor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ano&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;2002&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ano&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;livro&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;livro&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;linguagem&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;vb&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;titulo&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Introducao ao Visual Basic&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;titulo&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;autor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Marcelo Gomes&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;autor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ano&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;2005&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ano&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;livro&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;livro&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;linguagem&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;csharp&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;titulo&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;CSharp Avancado&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;titulo&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;autor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Jose Maria&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;autor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ano&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;2008&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ano&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;livro&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;livros&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Código utilizado para trazer os livros cuja linguagem seja vb:&lt;/p&gt;  &lt;div style="font-family: courier new; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Xml.Linq;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Carrega o arquivo Xml&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt; root = &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Load(&lt;span style="color: #a31515"&gt;&amp;quot;livros.xml&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Faz uma busca nos livros cujo atributo linguagem seja vb&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&amp;gt; linguagem =&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;from&lt;/span&gt; el &lt;span style="color: blue"&gt;in&lt;/span&gt; root.Elements(&lt;span style="color: #a31515"&gt;&amp;quot;livro&amp;quot;&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;where&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt;)el.Attribute(&lt;span style="color: #a31515"&gt;&amp;quot;linguagem&amp;quot;&lt;/span&gt;) == &lt;span style="color: #a31515"&gt;&amp;quot;vb&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;select&lt;/span&gt; el;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Exibe o resultado da pesquisa&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt; el &lt;span style="color: blue"&gt;in&lt;/span&gt; linguagem)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(el);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadKey();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Resultado obtido:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/SyYaigqNg7I/AAAAAAAAADs/JP9t-5FGTkM/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_BdopzjPwxSA/SyYajnNV4bI/AAAAAAAAADw/zVWQL8hnPMA/image_thumb%5B1%5D.png?imgmax=800" width="503" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Como conclusão podemos observar que o LINQ é uma linguagem que permite uma uniformidade para acessar dados em diversas fontes de informações.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-3453617030135387372?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dep5al9vxXy3VqejhIlg20H6lsg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dep5al9vxXy3VqejhIlg20H6lsg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dep5al9vxXy3VqejhIlg20H6lsg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dep5al9vxXy3VqejhIlg20H6lsg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/7LKXe-KRwpc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/3453617030135387372/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/11/tipos-de-linq.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/3453617030135387372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/3453617030135387372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/7LKXe-KRwpc/tipos-de-linq.html" title="Tipos de LINQ" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_BdopzjPwxSA/SyYagQIOEAI/AAAAAAAAADg/x2VIYDdmOi4/s72-c/Capture1_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/11/tipos-de-linq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIASHkzeyp7ImA9WxNRE0g.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-6593919484728543372</id><published>2009-09-07T18:22:00.001-03:00</published><updated>2009-09-07T18:22:29.783-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T18:22:29.783-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server 2008" /><title>Gerar Script SQL para criar Tabelas com Dados</title><content type="html">&lt;p&gt;Na época da base de dados Northwind era comum baixarmos o script da base de dados já com os dados aos invés de um arquivo para restaurar no nosso SQL Server.&lt;/p&gt;  &lt;p&gt;Normalmente esta geração de script era feita utilizando-se outras ferramentas. A partir do SQL Server 2008 podemos gerar um script que quando executado cria as tabelas e preenche os dados.&lt;/p&gt;  &lt;p&gt;Para gerar este script é bem simples. Vou demonstrar como gerar um script para criar as tabelas já com os dados da base AdventureWorksLT2008.&amp;#160; &lt;/p&gt;  &lt;p&gt;Com o botão direito do mouse selecione a base AdventureWorksLT2008 e clique no menu TASKS – GENERATE SCRIPTS.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5eEqiCdI/AAAAAAAAAC0/lzFlEqhR1E4/s1600-h/SQL16.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SQL1" border="0" alt="SQL1" src="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5fJey6WI/AAAAAAAAAC4/EYjrCw08X8w/SQL1_thumb4.jpg?imgmax=800" width="514" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Na tela SELECT DATABASE selecione a base de dados AdventureWorksLT2008 e habilite o campo &lt;em&gt;Script all objects in the selected database&lt;/em&gt;. Clique no botão NEXT.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5fz47cOI/AAAAAAAAAC8/sFrKvAxYEWg/s1600-h/SQL2%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SQL2" border="0" alt="SQL2" src="http://lh6.ggpht.com/_BdopzjPwxSA/SqV5gvkypyI/AAAAAAAAADA/zpRxOIvnrNk/SQL2_thumb%5B2%5D.jpg?imgmax=800" width="517" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Na tela CHOOSE SCRIPT OPTIONS vá até a opção &lt;strong&gt;Table/View Options&lt;/strong&gt; e altere o campo &lt;strong&gt;Script Data&lt;/strong&gt; para &lt;strong&gt;True&lt;/strong&gt;. Clique no botão NEXT.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_BdopzjPwxSA/SqV5heusa_I/AAAAAAAAADE/Byp_GydCRsM/s1600-h/SQL3%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SQL3" border="0" alt="SQL3" src="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5iAMyTdI/AAAAAAAAADI/bQu2cChUxAE/SQL3_thumb%5B2%5D.jpg?imgmax=800" width="504" height="462" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Na tela OUTPUT OPTION selecione onde o script deve ser gerado. O script pode ser gerado em um arquivo, na Área de Transferência ou em uma nova janela de consulta no SQL Management Studio. Selecione a opção &lt;strong&gt;Script to New Query Window &lt;/strong&gt;para visualizar o script. Clique no botão NEXT.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5i-hvkHI/AAAAAAAAADM/43J_MVKNrOU/s1600-h/SQL4%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SQL4" border="0" alt="SQL4" src="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5juD04FI/AAAAAAAAADQ/dfcBD-QdHYk/SQL4_thumb%5B1%5D.jpg?imgmax=800" width="483" height="442" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Na tela SCRIPT WIZARD SUMMARY certique-se que a opção Script Data esteja como True e clique no botão FINISH para que o script seja gerado.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/SqV5kJWEGVI/AAAAAAAAADU/DJY0yzGwL-U/s1600-h/SQL5%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SQL5" border="0" alt="SQL5" src="http://lh5.ggpht.com/_BdopzjPwxSA/SqV5lHbDRCI/AAAAAAAAADY/eZblqKT03hU/SQL5_thumb%5B1%5D.jpg?imgmax=800" width="474" height="434" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Com o script gerado basta executar em uma nova base de dados para obter uma cópia da base AdventureWorksLT2008 já com os dados.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-6593919484728543372?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U8NH9GhqSpDyyGViwY6PPpU4ouc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U8NH9GhqSpDyyGViwY6PPpU4ouc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U8NH9GhqSpDyyGViwY6PPpU4ouc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U8NH9GhqSpDyyGViwY6PPpU4ouc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/_qhSjSEg0Lw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/6593919484728543372/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/09/gerar-script-sql-para-criar-tabelas-com.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/6593919484728543372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/6593919484728543372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/_qhSjSEg0Lw/gerar-script-sql-para-criar-tabelas-com.html" title="Gerar Script SQL para criar Tabelas com Dados" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_BdopzjPwxSA/SqV5fJey6WI/AAAAAAAAAC4/EYjrCw08X8w/s72-c/SQL1_thumb4.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/09/gerar-script-sql-para-criar-tabelas-com.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EFQn08eSp7ImA9WxNTEEk.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-2385718258180592842</id><published>2009-08-11T22:35:00.001-03:00</published><updated>2009-08-11T22:46:53.371-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-11T22:46:53.371-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><title>Método ShowDialog() em WPF</title><content type="html">&lt;p&gt;A forma de exibir um formulário modal em WPF e obter a informação de qual botão foi acionado, foi alterado um pouco se comparado com o Windows Forms. O conceito é o mesmo mas a forma de verificar se foi acionado o botão Ok ou Cancelar, é um pouco diferente.&lt;/p&gt;  &lt;p&gt;Para mostrar como exibir um formulário modal em WPF vou utilizar um exemplo onde temos dois formulários Window1 e Window2, onde no formulário Window1 através do botão &lt;strong&gt;Exibir Formulário Modal&lt;/strong&gt; é exibido formulário Window2 com os botões &lt;strong&gt;Ok&lt;/strong&gt; e &lt;strong&gt;Cancelar&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/SoIcdnpHfOI/AAAAAAAAACs/h1wxpCEM5OI/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_BdopzjPwxSA/SoIceSbrNXI/AAAAAAAAACw/cUMOyRV8TIs/image_thumb%5B5%5D.png?imgmax=800" width="591" height="202" /&gt;&lt;/a&gt; Quando acionado o botão OK (ou tecla ENTER) o formulário é fechado e é exibida uma mensagem informando que o botão Ok foi pressionado. Quando pressionado o botão Cancelar (ou tecla ESC) o formulário também é fechado e é exibida uma mensagem informando que o botão Cancelar foi acionado.&lt;/p&gt;  &lt;p&gt;Para demonstrar o exemplo é necessário no formulário Window2 criar os botões Ok e Cancelar. Segue o código XAML para criação do formulário Window2 com os botões:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Window&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;WpfApplicationShowDialog.Window2&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Formulário Modal&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;157&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnOk&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Ok&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; &lt;strong&gt;IsDefault&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;=&amp;quot;True&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnOk_Click&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;47,53,0,0&amp;quot;&lt;/span&gt;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;23&amp;quot; &amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt; &lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnCancelar&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Cancelar&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; &lt;strong&gt;IsCancel&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;=&amp;quot;True&amp;quot;&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnCancelar_Click&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Right&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;0,53,42,0&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;23&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Top&amp;quot; &amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Window&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;No botão btnOk foi configurada a propriedade &lt;span style="color: red"&gt;&lt;strong&gt;IsDefault&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;=&amp;quot;True&amp;quot;&lt;/strong&gt;&lt;/span&gt;, para que o formulário chame o evento Click do botão quando a tecla ENTER for acionada. Cada formulário pode ter somente um botão com a propriedade &lt;span style="color: red"&gt;&lt;strong&gt;IsDefault&lt;/strong&gt;&lt;/span&gt; configurada como True.&lt;/p&gt;  &lt;p&gt;No botão btnCancelar foi configurada a propriedade &lt;span style="color: red"&gt;&lt;strong&gt;IsCancel&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;=&amp;quot;True&amp;quot;&lt;/strong&gt;&lt;/span&gt;, para que o formulário chame o evento Click do botão quando a tecla ESC for acionada. Cada formulário pode ter somente um botão com a propriedade &lt;span style="color: red"&gt;&lt;strong&gt;IsCancel&lt;/strong&gt;&lt;/span&gt; configurada como True.&lt;/p&gt;  &lt;p&gt;Depois de pronta a interface do formulário Window2 é necessário configurar a propriedade &lt;strong&gt;DialogResult&lt;/strong&gt; do formulário como True ou False, dependendo do resultado desejado, ou seja, no WPF o método &lt;strong&gt;ShowDialog() &lt;/strong&gt;retorna um valor booleano, podendo ser nulo (bool?), não existe mais os retornos DialogResult.Ok, DialogResult.Cancel, etc. Portanto precisamos informar o valor do DialogResult via código.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnOk_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DialogResult = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnCancelar_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DialogResult = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;No formulário Window1, no evento Click do botão Exibir Formulário Modal está implementada a chamada do formulário Window2 e dependendo do botão acionado é exibida a mensagem correspondente.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnExibirFrmModal_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Window2&lt;/span&gt; tela2 = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Window2&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Exibe a tela2 em formato modal&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tela2.ShowDialog();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Verifica se o DialogResult possui valor antes de verificar&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// qual o valor&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (tela2.DialogResult.HasValue)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Verifica após o fechamento da tela2, se foi acionado&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// o botão Ok ou o botão Cancelar&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (tela2.DialogResult.Value == &lt;span style="color: blue"&gt;true&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;Foi acionado o botão OK&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;Foi acionado o botão Cancelar&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Na linha 5 é chamado o formulário Window2 utilizando o método &lt;strong&gt;ShowDialog()&lt;/strong&gt;. Na linha 9 é verificado se a propriedade &lt;strong&gt;DialogResult&lt;/strong&gt; tem valor antes de ler o mesmo. Se tem valor e é verdadeiro foi acionado o botão OK em caso contrário foi acionado o botão Cancelar.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-2385718258180592842?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BpSY21KnBDEV39bz-gLBk8nkNFE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BpSY21KnBDEV39bz-gLBk8nkNFE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BpSY21KnBDEV39bz-gLBk8nkNFE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BpSY21KnBDEV39bz-gLBk8nkNFE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/UQyXuns6VrI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/2385718258180592842/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/08/metodo-showdialog-em-wpf.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2385718258180592842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2385718258180592842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/UQyXuns6VrI/metodo-showdialog-em-wpf.html" title="Método ShowDialog() em WPF" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_BdopzjPwxSA/SoIceSbrNXI/AAAAAAAAACw/cUMOyRV8TIs/s72-c/image_thumb%5B5%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/08/metodo-showdialog-em-wpf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcAQno8cSp7ImA9WxJaFk0.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-2207737977490479417</id><published>2009-08-06T21:45:00.001-03:00</published><updated>2009-08-06T21:47:23.479-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-06T21:47:23.479-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WebService" /><title>Teste e Debug de WebService em Máquina Remota</title><content type="html">&lt;p&gt;Durante o desenvolvimento de WebService o Visual Studio facilita o teste e debug na própria Interface de desenvolvimento, mas esta facilidade funciona somente quando estamos fazendo o teste na máquina de desenvolvimento utilizando o &lt;a href="http://localhost"&gt;http://localhost&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Quando por algum motivo precisamos fazer um teste ou simplesmente verificar se um WebService esta respondendo em uma máquina remota não é possível utilizar o browser com a URL do WebService, pois por questões de segurança os métodos e funções do webService não estão acessíveis na máquina remota.&lt;/p&gt;  &lt;p&gt;Podemos fazer uma alteração no arquivo Web.Config do WebService para liberar o acesso aos métodos e funções do WebService em um browser.&lt;/p&gt;  &lt;p&gt;Para liberar o acesso para teste dos métodos e funções do WebService basta incluir o HttpGet e HttpPost na tag &amp;lt;system.web&amp;gt; do WebService.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;webServices&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;protocols&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HttpPost&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HttpGet&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;protocols&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;webServices&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Depois de executado todos os testes necessários altere a configuração para remover o acesso ao HttpPost e HttpGet.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;webServices&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;protocols&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HttpPost&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;remove&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;HttpGet&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;protocols&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;webServices&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Não esquecer de desabilitar o acesso ao HttpPost e HttpGet depois dos testes. Isto é muito importante por questões de segurança.&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-2207737977490479417?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZiAAQqQazunQ3MIutZxg9vBO02s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZiAAQqQazunQ3MIutZxg9vBO02s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZiAAQqQazunQ3MIutZxg9vBO02s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZiAAQqQazunQ3MIutZxg9vBO02s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/0g9MIHzTHvg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/2207737977490479417/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/08/teste-e-debug-de-webservice-em-maquina.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2207737977490479417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/2207737977490479417?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/0g9MIHzTHvg/teste-e-debug-de-webservice-em-maquina.html" title="Teste e Debug de WebService em Máquina Remota" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/08/teste-e-debug-de-webservice-em-maquina.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QHQ3k7eyp7ImA9WxJaFk0.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-5046779475054015707</id><published>2009-04-29T22:12:00.000-03:00</published><updated>2009-08-06T21:35:32.703-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-06T21:35:32.703-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><title>Herança Visual em Formulário Windows Mobile</title><content type="html">&lt;table cellspacing="0" cellpadding="2" width="500" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="88"&gt;Tecnologia:&lt;/td&gt;        &lt;td valign="top" width="410"&gt;Windows Mobile 5.0 ou superior&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;Ferramenta:&lt;/td&gt;        &lt;td valign="top" width="410"&gt;Visual Studio 2008 Team System&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;A programação de Windows Forms para a plataforma Windows Mobile é similar a do Windows Forms para Desktop, inclusive podemos utilizar o conceito de herança visual de formulário também em aplicações Windows Mobile.&lt;/p&gt;  &lt;p&gt;No caso de utilizar herança visual em formulário nas aplicações mobile, em algumas situações podemos nos deparar com a seguinte mensagem de erro, no momento de criar o formulário herdado:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;“Visual inheritance is currently disabled because the base class references a device-specific component or contains P/Invoke.”&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Esta mensagem pode ocorrer em aplicações que utilizam um componente específico do dispositivo ou quando chamamos métodos utilizando o PInvoke do .NET nas chamadas de códigos não gerenciados.&lt;/p&gt;  &lt;p&gt;A figura a seguir exibe um formulário apresentando a mensagem de erro no momento de criação quando utilizada a herança visual, e o mesmo formulário apresentando corretamente os controles utilizando a herança visual. Inclusive podemos observar na figura que os controles são herdados pela indicação de uma seta em cada controle herdado.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_BdopzjPwxSA/Sfj7xqbJBYI/AAAAAAAAABc/PkpGOUgK3w8/s1600-h/inheritance%5B4%5D.jpg"&gt;&lt;img title="inheritance" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="387" alt="inheritance" src="http://lh5.ggpht.com/_BdopzjPwxSA/Sfj7yWgbLsI/AAAAAAAAABg/byASi50XAXs/inheritance_thumb%5B2%5D.jpg?imgmax=800" width="457" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;Para corrigir o problema da mensagem de erro descrita acima siga as seguintes instruções: &lt;/p&gt;  &lt;p align="left"&gt;1. Clique com o botão direito o formulário “pai” no Solution Explorer do Visual Studio e selecione o menu &lt;strong&gt;View Class Diagram&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_BdopzjPwxSA/Sfj7zMrwJsI/AAAAAAAAABk/HYgUyjOXvhk/s1600-h/inheritance3%5B3%5D.jpg"&gt;&lt;img title="inheritance3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="359" alt="inheritance3" src="http://lh6.ggpht.com/_BdopzjPwxSA/Sfj7z9N-yYI/AAAAAAAAABo/g-v1IeARq98/inheritance3_thumb%5B1%5D.jpg?imgmax=800" width="226" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;2. Na tela de Diagrama de Classes selecione a classe do formulário “pai”.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_BdopzjPwxSA/Sfj70fSh2uI/AAAAAAAAABs/pEngXV00YS0/s1600-h/inheritance4%5B2%5D.jpg"&gt;&lt;img title="inheritance4" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="86" alt="inheritance4" src="http://lh6.ggpht.com/_BdopzjPwxSA/Sfj709lKAnI/AAAAAAAAABw/-BUi4hC_LwM/inheritance4_thumb.jpg?imgmax=800" width="169" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;3. Nas Propriedades da classe selecione a propriedade &lt;strong&gt;Custom Attributes&lt;/strong&gt; e digite &lt;em&gt;DesktopCompatible(true)&lt;/em&gt; na janela de &lt;strong&gt;Custom Attributes for Form1&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/Sfj71e9QMcI/AAAAAAAAAB0/TWFdfb0Jnnw/s1600-h/inheritance2%5B3%5D.jpg"&gt;&lt;img title="inheritance2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="237" alt="inheritance2" src="http://lh6.ggpht.com/_BdopzjPwxSA/Sfj72NoZzII/AAAAAAAAAB4/T3DKKIfH9D0/inheritance2_thumb%5B1%5D.jpg?imgmax=800" width="423" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;4. Observe que foi criado o arquivo &lt;em&gt;DesignTimeAttributes.xmta&lt;/em&gt; no diretório do projeto com o seguinte conteúdo.&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Classes&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;SmartDeviceProject2.Form1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DesktopCompatible&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DesktopCompatible&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Classes&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;5. Após a criação deste arquivo podemos criar formulários que herdem os controles deste formulário “pai”, sem que seja apresentada a mensagem de erro descrita acima.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-5046779475054015707?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xfbN8CLpWqJN_rwyJ769I5NsMwU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfbN8CLpWqJN_rwyJ769I5NsMwU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xfbN8CLpWqJN_rwyJ769I5NsMwU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfbN8CLpWqJN_rwyJ769I5NsMwU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/qW8YoHKUv_4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/5046779475054015707/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/04/heranca-visual-em-formulario-windows.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/5046779475054015707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/5046779475054015707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/qW8YoHKUv_4/heranca-visual-em-formulario-windows.html" title="Herança Visual em Formulário Windows Mobile" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_BdopzjPwxSA/Sfj7yWgbLsI/AAAAAAAAABg/byASi50XAXs/s72-c/inheritance_thumb%5B2%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/04/heranca-visual-em-formulario-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QESH85fCp7ImA9WxJaFk0.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-8331081263773122040</id><published>2009-03-30T22:30:00.001-03:00</published><updated>2009-08-06T21:35:09.124-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-06T21:35:09.124-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Forms" /><title>SelectAll no Controle MaskedTextBox</title><content type="html">&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="87"&gt;Assunto:&lt;/td&gt;        &lt;td valign="top" width="313"&gt;Windows Forms&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="87"&gt;Ferramenta:&lt;/td&gt;        &lt;td valign="top" width="313"&gt;Visual Studio 2008 Team System&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Recentemente resolvi utilizar um controle MaskedTextBox em uma aplicação Windows Forms, para preencher um campo de data e utilizar a facilidade da máscara de data.&lt;/p&gt;  &lt;p&gt;Para facilitar para o usuário, quando o formulário era apresentado na aplicação o campo de data já aparecia preenchido com a data atual. Bastava que o usuário aceitasse a data atual ou se quisesse alterar a data, o campo já apareceria selecionado facilitando assim a inserção da nova data.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_BdopzjPwxSA/SdVsrnDGJdI/AAAAAAAAABU/gcHApuoOUns/s1600-h/form1%5B3%5D.jpg"&gt;&lt;img title="form1" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="138" alt="form1" src="http://lh5.ggpht.com/_BdopzjPwxSA/SdVssLY_SkI/AAAAAAAAABY/HIA8JSXgzlE/form1_thumb%5B1%5D.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Para fazer com que a informação no campo de data apareça selecionada quando o foco está no campo de data normalmente utilizamos o método &lt;strong&gt;SelectAll()&lt;/strong&gt; do controle. No caso do controle MaskedTextBox este método não funciona diretamente como no controle TextBox. Encontrei duas formas de conseguir selecionar o texto como indicado na figura acima:&lt;/p&gt;  &lt;p&gt;A primeira forma é através de delegate, chamando o método &lt;strong&gt;SelectAll&lt;/strong&gt;, depois que todas as mensagens do formulário são processadas.&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; mskDataPublicacao_Enter(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.BeginInvoke((&lt;span style="color: #2b91af"&gt;MethodInvoker&lt;/span&gt;)&lt;span style="color: blue"&gt;delegate&lt;/span&gt;()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.mskDataPublicacao.SelectAll();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;A segunda forma é chamando o método &lt;strong&gt;Focus()&lt;/strong&gt; antes do método &lt;strong&gt;SelectAll()&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; mskDataPublicacao_Enter(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.mskDataPublicacao.Focus();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.mskDataPublicacao.SelectAll();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-8331081263773122040?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BBoxqz_R0-7srKnjhpV5qp3DCHU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BBoxqz_R0-7srKnjhpV5qp3DCHU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BBoxqz_R0-7srKnjhpV5qp3DCHU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BBoxqz_R0-7srKnjhpV5qp3DCHU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/h6sjpHf3RkQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/8331081263773122040/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/03/selectall-no-controle-maskedtextbox.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/8331081263773122040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/8331081263773122040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/h6sjpHf3RkQ/selectall-no-controle-maskedtextbox.html" title="SelectAll no Controle MaskedTextBox" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_BdopzjPwxSA/SdVssLY_SkI/AAAAAAAAABY/HIA8JSXgzlE/s72-c/form1_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/03/selectall-no-controle-maskedtextbox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UDSXk6fSp7ImA9WxJaFk0.&quot;"><id>tag:blogger.com,1999:blog-8954385689212905729.post-5616720354181662631</id><published>2009-02-16T20:11:00.006-03:00</published><updated>2009-08-06T21:34:38.715-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-06T21:34:38.715-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Criando uma Assinatura Digital</title><content type="html">&lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;Os algoritimos&amp;nbsp;utilizados em assinatura digital mapeiam valores de tamanho arbitrário para valores binários de tamanho fixo.&amp;nbsp;O .NET framework possui várias classes que implementam algorítimos de assinatura digital, tais como:&amp;nbsp;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;HMACSHA1 
&lt;LI&gt;MACTripleDES 
&lt;LI&gt;MD5CryptoServiceProvider 
&lt;LI&gt;RIPEMD160 
&lt;LI&gt;SHA1Managed 
&lt;LI&gt;SHA256Managed 
&lt;LI&gt;SHA384Managed 
&lt;LI&gt;SHA512Managed&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV&gt;Quando utilizamos uma classe que implementa uma assinatura digital&amp;nbsp;temos a garantia&amp;nbsp;de que dois conjuntos de valores idênticos terão o mesmo resultado com tamanho fixo. Qualquer pequena alteração no valor fará com que o resultado seja totalmente diferente.&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Segue um exemplo de utilização de uma&amp;nbsp;classe que pode ser utilizada para assinatura digital. O exemplo utiliza a classe &lt;B&gt;SHA256Managed&lt;/B&gt; que cria uma assinatura digital para a palavra Romar.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Para que o exemplo funcione é necessário incluir o namespace System.Security.Cryptography.&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Linq;&lt;BR&gt;using System.Text;&lt;BR&gt;using System.Security.Cryptography;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Program&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] dados = Encoding.ASCII.GetBytes("Romar");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] resultado;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Cria um hash para a palavra Romar&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHA256 shaM = new SHA256Managed();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resultado = shaM.ComputeHash(dados);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Utilizando a classe Encoding&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string palavraCriptografada1 = Encoding.ASCII.GetString(resultado);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Resultado com a classe Encoding:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(palavraCriptografada1);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine();&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // utilizando a classe BitConverter&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string palavraCriptografada2 = BitConverter.ToString(resultado);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Resultado com a classe BitConverter:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(palavraCriptografada2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadKey();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;No exemplo imprimimos o resultado de duas formas; uma exibindo o resultado como uma string utilizando a classe Encoding e a outra utilizando a classe BitConverter. A classe Encoding foi utilizada com o valor ASCII, portanto o resultado é uma string com os valores da assinatura digital exibidos em caracteres que nem sempre são imprimíveis e podem apresentar dificuldade para se armazenar em alguns tipos de arquivos. Uma opção para armazenamento seria trazer o resultado em um formato mais amigável, por exemplo em hexadecimal. A classe BitConverter facilita este trabalho fazendo a conversão do resultado em um array de bytes que pode ser facilmente manipulado e armazenado.&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;Resultado com a classe Encoding:&lt;BR&gt;k?+??$???►?,?4F&lt;BR&gt;?↨B¶v?e☺\???C&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Observando o resultado do exemplo utilizando-se a classe BitConverter podemos observar que temos 32 bytes. A classe SHA256Managed sempre retornará um tamanho fixo de 32 bytes (256 bits).&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Resultado com a classe BitConverter:&lt;BR&gt;6B-EC-2B-AE-B9-24-E2-F9-BC-10-D1-2C-D9-34-46-07-0A-87-17-42-14-76-EA-5B-08-65-01&lt;BR&gt;-5C-BD-F1-D5-43&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8954385689212905729-5616720354181662631?l=romarconsultoria.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/F6TmUHGjuV3m6tMwDxGaoQ-jZRY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/F6TmUHGjuV3m6tMwDxGaoQ-jZRY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/F6TmUHGjuV3m6tMwDxGaoQ-jZRY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/F6TmUHGjuV3m6tMwDxGaoQ-jZRY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RomarConsultoriaBlog/~4/q-w0SaIRNi4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://romarconsultoria.blogspot.com/feeds/5616720354181662631/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://romarconsultoria.blogspot.com/2009/02/criando-uma-assinatura-digital.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/5616720354181662631?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8954385689212905729/posts/default/5616720354181662631?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RomarConsultoriaBlog/~3/q-w0SaIRNi4/criando-uma-assinatura-digital.html" title="Criando uma Assinatura Digital" /><author><name>Rosana Oliveira</name><uri>https://profiles.google.com/105782710176673264551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-Jugswof8iFY/AAAAAAAAAAI/AAAAAAAAAN4/GXq64-rlfQg/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://romarconsultoria.blogspot.com/2009/02/criando-uma-assinatura-digital.html</feedburner:origLink></entry></feed>

