tag:blogger.com,1999:blog-6582655403970471332024-03-02T23:00:33.189+05:30Android PracticesRajesh Vijayakumarhttp://www.blogger.com/profile/11145648438764133651noreply@blogger.comBlogger60125tag:blogger.com,1999:blog-658265540397047133.post-68066421432371522502023-07-06T12:12:00.003+05:302023-07-06T12:12:39.788+05:30JetPack Compose : ListView Example with ItemClick Listener<p> </p><p> 1. Add the required dependencies to your project's <code>build.gradle</code> file:</p><p> </p><p><u>In root Project gradle file </u><br /></p><pre class="default s-code-block" style="margin-left: 40px; text-align: left;"><code class="hljs language-bash">buildFeatures {
compose <span class="hljs-literal">true</span>
} </code></pre><pre class="default s-code-block" style="margin-left: 40px; text-align: left;"><code class="hljs language-bash"> </code></pre><p><u>In app module gradle file </u><br /></p><code class="hljs language-bash"></code><pre class="default s-code-block" style="margin-left: 40px; text-align: left;"></pre><pre style="margin-left: 40px; text-align: left;"><code class="!whitespace-pre hljs language-groovy">dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.compose.ui:ui:1.0.4'
implementation 'androidx.compose.material:material:1.2.1'
implementation 'androidx.compose.ui:ui-tooling:1.0.4'
}</code></pre><p></p><p> 2. Create a new Composable function in your activity or fragment</p><pre style="background-color: white; color: #080808; font-family: "JetBrains Mono", monospace; font-size: 9pt; margin-left: 80px; text-align: left;"><span style="color: #0033b3;">package </span>com.rajeshvijayakumr.jetpackcompose<br /><br /><span style="color: #0033b3;">import </span>android.os.<span style="color: black;">Bundle<br /></span><span style="color: #0033b3;">import </span>androidx.activity.<span style="color: black;">ComponentActivity<br /></span><span style="color: #0033b3;">import </span>androidx.activity.compose.setContent<br /><span style="color: #0033b3;">import </span>androidx.compose.foundation.layout.*<br /><span style="color: #0033b3;">import </span>androidx.compose.foundation.lazy.LazyColumn<br /><span style="color: #0033b3;">import </span>androidx.compose.foundation.lazy.items<br /><span style="color: #0033b3;">import </span>androidx.compose.material3.Text<br /><span style="color: #0033b3;">import </span>androidx.compose.runtime.<span style="color: #9e880d;">Composable<br /></span><span style="color: #0033b3;">import </span>androidx.compose.ui.<span style="color: black;">Modifier<br /></span><span style="color: #0033b3;">import </span>androidx.compose.ui.unit.dp</pre><pre style="background-color: white; color: #080808; font-family: "JetBrains Mono", monospace; font-size: 9pt; margin-left: 80px; text-align: left;"><br /><span style="color: #0033b3;">class </span><span style="color: black;">ListViewActivity </span>: ComponentActivity() {<br /> <span style="color: #0033b3;">override fun </span><span style="color: #00627a;">onCreate</span>(savedInstanceState: <span style="color: black;">Bundle</span>?) {<br /> <span style="color: #0033b3;">super</span>.onCreate(savedInstanceState)<br /><br /> <span style="color: #0033b3;">val </span><span style="color: black;">items </span>= <span style="color: #00627a; font-style: italic;">listOf</span>(<br /> <span style="color: #067d17;">"Item 1"</span>, <span style="color: #067d17;">"Item 2"</span>, <span style="color: #067d17;">"Item 3"</span>,<br /> <span style="color: #067d17;">"Item 4"</span>, <span style="color: #067d17;">"Item 5"</span>, <span style="color: #067d17;">"Item 6"<br /></span><span style="color: #067d17;"> </span>)<br /><br /> <span style="color: #00627a; font-style: italic;">setContent </span><span style="font-weight: bold;">{<br /></span><span style="font-weight: bold;"> </span><span style="color: #009900;">MyScreen</span>(<span style="color: #4a86e8;">items = </span><span style="color: black;">items</span>)<br /> <span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> </span>}<br />}<br /><br /><span style="color: #9e880d;">@Composable<br /></span><span style="color: #0033b3;">fun </span><span style="color: #00627a;">MyScreen</span>(items: <span style="color: black;">List</span><<span style="color: black;">String</span>>) {<br /> <span style="color: #009900;">LazyColumn </span><span style="font-weight: bold;">{<br /></span><span style="font-weight: bold;"> </span><span style="color: #00627a; font-style: italic;">items</span>(<span style="color: black;">items</span>) <span style="font-weight: bold;">{ </span>item <span style="font-weight: bold;">-><br /></span><span style="font-weight: bold;"> </span><span style="color: #009900;">ListItem</span>(<span style="color: #4a86e8;">item = </span>item)<br /> <span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> }<br /></span>}<br /><br /><span style="color: #9e880d;">@Composable<br /></span><span style="color: #0033b3;">fun </span><span style="color: #00627a;">ListItem</span>(item: <span style="color: black;">String</span>) {<br /> <span style="color: #0033b3;">val </span><span style="color: black;">context </span>= <span style="color: #871094; font-style: italic;">LocalContext</span>.<span style="color: #009900;">current<br /></span><span style="color: #009900;"> </span><span style="color: #8c8c8c; font-style: italic;">// Use Clickable modifier to handle item click<br /></span><span style="color: #8c8c8c; font-style: italic;"> </span><span style="color: #009900;">Column</span>(<br /> <span style="color: #4a86e8;">modifier = </span><span style="color: black;">Modifier<br /></span><span style="color: black;"> </span>.<span style="color: #00627a; font-style: italic;">clickable </span><span style="font-weight: bold;">{ </span><span style="color: #00627a; font-style: italic;">showToast</span>(<span style="color: black;">context</span>, <span style="color: black;">item</span>) <span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> </span>.<span style="color: #00627a; font-style: italic;">fillMaxWidth</span>()<br /> .<span style="color: #00627a; font-style: italic;">fillMaxWidth</span>()<br /> .<span style="color: #00627a; font-style: italic;">padding</span>(<span style="color: #1750eb;">6</span>.<span style="color: #871094; font-style: italic;">dp</span>)<br /> .<span style="color: #00627a; font-style: italic;">background</span>(<br /> <span style="color: #009900;">colorResource</span>(<span style="color: #4a86e8;">id = </span>android.<span style="color: black;">R</span>.<span style="color: black;">color</span>.<span style="color: #871094; font-style: italic;">holo_blue_dark</span>),<br /> <span style="color: #4a86e8;">shape = </span><span style="color: #871094; font-style: italic;">RectangleShape<br /></span><span style="color: #871094; font-style: italic;"> </span>),<br /> <span style="color: #4a86e8;">verticalArrangement = </span><span style="color: black;">Arrangement</span>.<span style="color: #871094;">Center</span>,<br /> ) <span style="font-weight: bold;">{<br /></span><span style="font-weight: bold;"><br /></span><span style="font-weight: bold;"> </span><span style="color: #009900;">Text</span>(<br /> <span style="color: #4a86e8;">text = </span><span style="color: black;">item</span>,<br /> <span style="color: #4a86e8;">modifier = </span><span style="color: black;">Modifier<br /></span><span style="color: black;"> </span>.<span style="color: #00627a; font-style: italic;">fillMaxWidth</span>()<br /> .<span style="color: #00627a; font-style: italic;">padding</span>(<span style="color: #1750eb;">9</span>.<span style="color: #871094; font-style: italic;">dp</span>)<br /> .<span style="color: #00627a; font-style: italic;">height</span>(<span style="color: #1750eb;">60</span>.<span style="color: #871094; font-style: italic;">dp</span>)<br /> .<span style="color: #00627a; font-style: italic;">wrapContentSize</span>(<span style="color: #4a86e8;">align = </span><span style="color: black;">Alignment</span>.<span style="color: #871094;">CenterStart</span>),<br /> <span style="color: #4a86e8;">color = </span><span style="color: black;">Color</span>.<span style="color: #871094;">White</span>,<br /> <span style="color: #4a86e8;">textAlign = </span><span style="color: black;">TextAlign</span>.<span style="color: #871094;">Start<br /></span><span style="color: #871094;"><br /></span><span style="color: #871094;"> </span>)<br /> <span style="font-weight: bold;">}<br /></span>}<br /><br /><span style="color: #0033b3;">fun </span><span style="color: #00627a;">showToast</span>(context: <span style="color: black;">Context</span>, item: <span style="color: black;">String</span>) {<br /> <span style="color: black;">Toast</span>.makeText(<br /> context,<br /> <span style="color: #067d17;">"Clicked: </span><span style="color: #0037a6;">$</span>item<span style="color: #067d17;">"</span>,<br /> <span style="color: black;">Toast</span>.<span style="color: #871094; font-style: italic;">LENGTH_SHORT<br /></span><span style="color: #871094; font-style: italic;"> </span>).show()<br />}</pre><pre style="background-color: white; color: #080808; font-family: "JetBrains Mono", monospace; font-size: 9pt; margin-left: 80px; text-align: left;"> </pre><p>In the above example, <code>MyScreen</code> is a composable that takes a list of items and creates a <code>LazyColumn</code> with <code>items</code> to iterate over the list. For each item, it calls the <code>ListItem</code> composable, passing the item as a parameter.</p><p><code>ListItem</code>
is a custom composable that represents each item in the list. You can
define the content and layout for each item inside this composable. In
this example, it's a <code>Column</code> with a <code>Text</code> component displaying the item's text. You can add additional custom content for each item as needed.</p><p>In the <code>MainActivity</code>, the list of items is provided to the <code>MyScreen</code> composable, which sets the content view of the activity using <code>setContent</code>.</p><p>When
you run the app, you should see a list of items displayed vertically,
and you can customize the content and layout of each item in the <code>ListItem</code> composable based on your requirements.</p><p> Output ScreenShot</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KPvA-hxMYPDXckDfdyFFSDlm6y9iFSNhSXHJQ33yyRKkCmx9jXmHJ_EgvZqBaa9VUCj4_gMi6ccEAYk4Vtl_a881eZYhuaOpiQp3Pjd4Xoj03RFzHBvSkVvHIH6gJP5G8Qlb_inEimOAK_lEtFcDjvWXXyQlGMNYDiZ6SN0hjZSUN5x9kWUcFX7rnTA/s2280/Screenshot_20230706_120835.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2280" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KPvA-hxMYPDXckDfdyFFSDlm6y9iFSNhSXHJQ33yyRKkCmx9jXmHJ_EgvZqBaa9VUCj4_gMi6ccEAYk4Vtl_a881eZYhuaOpiQp3Pjd4Xoj03RFzHBvSkVvHIH6gJP5G8Qlb_inEimOAK_lEtFcDjvWXXyQlGMNYDiZ6SN0hjZSUN5x9kWUcFX7rnTA/s320/Screenshot_20230706_120835.png" width="152" /></a></div><br /><p><br /></p><p></p><p><br /></p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>Source Code : <a href="https://github.com/rajeshvijayakumar/JetPackCompose/tree/listview-itemclick-example" target="_blank">Click Here to Github Link</a><br /></p>Rajesh Vijayakumarhttp://www.blogger.com/profile/11145648438764133651noreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-25314638801180590992023-06-22T11:50:00.002+05:302023-06-22T11:53:10.288+05:30JetPack Compose : Simple ListView Example<p> 1. Add the required dependencies to your project's <code>build.gradle</code> file:</p><p> </p><p><u>In root Project gradle file </u><br /></p><pre class="default s-code-block" style="margin-left: 40px; text-align: left;"><code class="hljs language-bash">buildFeatures {
compose <span class="hljs-literal">true</span>
} </code></pre><pre class="default s-code-block" style="margin-left: 40px; text-align: left;"><code class="hljs language-bash"> </code></pre><p><u>In app module gradle file </u><br /></p><code class="hljs language-bash"></code><pre class="default s-code-block" style="margin-left: 40px; text-align: left;"></pre><pre style="margin-left: 40px; text-align: left;"><code class="!whitespace-pre hljs language-groovy">dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.compose.ui:ui:1.0.4'
implementation 'androidx.compose.material:material:1.2.1'
implementation 'androidx.compose.ui:ui-tooling:1.0.4'
}</code></pre><p></p><p> 2. Create a new Composable function in your activity or fragment</p><pre style="background-color: white; color: #080808; font-family: "JetBrains Mono", monospace; font-size: 9pt; margin-left: 80px; text-align: left;"><span style="color: #0033b3;">package </span>com.rajeshvijayakumr.jetpackcompose<br /><br /><span style="color: #0033b3;">import </span>android.os.<span style="color: black;">Bundle<br /></span><span style="color: #0033b3;">import </span>androidx.activity.<span style="color: black;">ComponentActivity<br /></span><span style="color: #0033b3;">import </span>androidx.activity.compose.setContent<br /><span style="color: #0033b3;">import </span>androidx.compose.foundation.layout.*<br /><span style="color: #0033b3;">import </span>androidx.compose.foundation.lazy.LazyColumn<br /><span style="color: #0033b3;">import </span>androidx.compose.foundation.lazy.items<br /><span style="color: #0033b3;">import </span>androidx.compose.material3.Text<br /><span style="color: #0033b3;">import </span>androidx.compose.runtime.<span style="color: #9e880d;">Composable<br /></span><span style="color: #0033b3;">import </span>androidx.compose.ui.<span style="color: black;">Modifier<br /></span><span style="color: #0033b3;">import </span>androidx.compose.ui.unit.dp<br /><br /><span style="color: #0033b3;">class </span><span style="color: black;">ListViewActivity </span>: ComponentActivity() {<br /> <span style="color: #0033b3;">override fun </span><span style="color: #00627a;">onCreate</span>(savedInstanceState: <span style="color: black;">Bundle</span>?) {<br /> <span style="color: #0033b3;">super</span>.onCreate(savedInstanceState)<br /><br /> <span style="color: #0033b3;">val </span><span style="color: black;">items </span>= <span style="color: #00627a; font-style: italic;">listOf</span>(<span style="color: #067d17;">"Item 1"</span>, <span style="color: #067d17;">"Item 2"</span>, <span style="color: #067d17;">"Item 3"</span>,<span style="color: #067d17;">"Item 4"</span>, <span style="color: #067d17;">"Item 5"</span>,</pre><pre style="background-color: white; color: #080808; font-family: "JetBrains Mono", monospace; font-size: 9pt; margin-left: 80px; text-align: left;"><span style="color: #067d17;"><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span><span> </span>"Item 6"</span>,<span style="color: #067d17;">"Item 7"</span>, <span style="color: #067d17;">"Item 8"</span>, <span style="color: #067d17;">"Item 9"</span>)<br /><br /> <span style="color: #00627a; font-style: italic;">setContent </span><span style="font-weight: bold;">{<br /></span><span style="font-weight: bold;"> </span><span style="color: #009900;">MyScreen</span>(<span style="color: black;">items</span>)<br /> <span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> </span>}<br /> }<br /><br /> <span style="color: #9e880d;">@Composable<br /></span><span style="color: #9e880d;"> </span><span style="color: #0033b3;">fun </span><span style="color: #00627a;">MyScreen</span>(items: <span style="color: black;">List</span><<span style="color: black;">String</span>>) {<br /> <span style="color: #009900;">LazyColumn </span><span style="font-weight: bold;">{<br /></span><span style="font-weight: bold;"> </span><span style="color: #00627a; font-style: italic;">items</span>(<span style="color: black;">items</span>) <span style="font-weight: bold;">{ </span>item <span style="font-weight: bold;">-><br /></span><span style="font-weight: bold;"> </span><span style="color: #009900;">ListItem</span>(<span style="color: #4a86e8;">item = </span>item)<br /> <span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> }<br /></span><span style="font-weight: bold;"> </span>}<br /><br /> <span style="color: #9e880d;">@Composable<br /></span><span style="color: #9e880d;"> </span><span style="color: #0033b3;">fun </span><span style="color: #00627a;">ListItem</span>(item: <span style="color: black;">String</span>) {<br /> <span style="color: #009900;">Column</span>(<br /> <span style="color: #4a86e8;">modifier = </span><span style="color: black;">Modifier<br /></span><span style="color: black;"> </span>.<span style="color: #00627a; font-style: italic;">padding</span>(<span style="color: #1750eb;">16</span>.<span style="color: #871094; font-style: italic;">dp</span>)<br /> .<span style="color: #00627a; font-style: italic;">fillMaxWidth</span>()<br /> ) <span style="font-weight: bold;">{<br /></span><span style="font-weight: bold;"> </span><span style="color: #009900;">Text</span>(<span style="color: #4a86e8;">text = </span>item)<br /> <span style="color: #8c8c8c; font-style: italic;">// Add other custom content for each item<br /></span><span style="color: #8c8c8c; font-style: italic;"> </span><span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> </span>}<br /></pre><p style="margin-left: 40px; text-align: left;"><br /><br /></p><p>In the above example, <code>MyScreen</code> is a composable that takes a list of items and creates a <code>LazyColumn</code> with <code>items</code> to iterate over the list. For each item, it calls the <code>ListItem</code> composable, passing the item as a parameter.</p><p><code>ListItem</code> is a custom composable that represents each item in the list. You can define the content and layout for each item inside this composable. In this example, it's a <code>Column</code> with a <code>Text</code> component displaying the item's text. You can add additional custom content for each item as needed.</p><p>In the <code>MainActivity</code>, the list of items is provided to the <code>MyScreen</code> composable, which sets the content view of the activity using <code>setContent</code>.</p><p>When you run the app, you should see a list of items displayed vertically, and you can customize the content and layout of each item in the <code>ListItem</code> composable based on your requirements.</p><p> Output ScreenShot</p><p><br /></p><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH7reJX6p0Ee7Jpvdb8Ok1U6AHMQKClaNI9AZ3t-6GXWlTbp5YL85vNcAubvno3ugZGSZWDvBE1V1JeVmWfyNqQk83ibP2NvTMqujvXw71j6-Kh7l5oo5P3O3TIUufaGPcyPS74JKHJcfK9EOKg8QKtSOP--LYUANZ-Iuef2KiLuXm8q-8RuvJVL9SrDE/s2280/listview.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2280" data-original-width="1080" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH7reJX6p0Ee7Jpvdb8Ok1U6AHMQKClaNI9AZ3t-6GXWlTbp5YL85vNcAubvno3ugZGSZWDvBE1V1JeVmWfyNqQk83ibP2NvTMqujvXw71j6-Kh7l5oo5P3O3TIUufaGPcyPS74JKHJcfK9EOKg8QKtSOP--LYUANZ-Iuef2KiLuXm8q-8RuvJVL9SrDE/w130-h236/listview.png" width="130" /></a></div><p></p><p><br /></p><p>Source Code : <a href="https://github.com/rajeshvijayakumar/JetPackCompose/tree/simple-listview-example" target="_blank">Click Here to Github Link</a><br /></p>Rajesh Vijayakumarhttp://www.blogger.com/profile/11145648438764133651noreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-60444860462771474592016-07-08T16:29:00.002+05:302016-07-08T16:29:26.341+05:30Horizontal List using recycler view in android<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="color: red;"><u><b><span style="font-weight: normal;">activity_main.xml</span></b></u></span></h2>
<div style="text-align: left;">
<div style="background-color: white; color: black; font-family: "DejaVu Sans Mono"; font-size: 9pt; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"><span style="font-style: italic;"><?</span>xml version="1.0" encoding="utf-8"<span style="font-style: italic;">?></span><android.support.v7.widget.RecyclerView<br /> android:id="@+id/recycler_view"<br /> xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> android:background="@android:color/white"<br /> android:layout_gravity="center"<br /> /></span></span></span></div>
<br />
<span style="color: red;"><u><span style="font-weight: normal;">item_view.xml </span></u></span></div>
<div style="text-align: left;">
<span style="color: red;"><span style="font-weight: normal;"><span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?></span></span></span><br />
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="wrap_content"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:background="#efefef"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_margin="5dp"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <ImageView</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:id="@+id/item_icon"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="40dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="40dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_centerVertical="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentBottom="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentLeft="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentStart="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentTop="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_marginRight="6dip"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:src="@android:drawable/ic_notification_overlay"/></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <LinearLayout</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="wrap_content"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_toRightOf="@id/item_icon"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_centerVertical="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_margin="5dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:padding="5dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:background="@android:color/white"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:orientation="vertical"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <TextView</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:id="@+id/item_text"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="26dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:ellipsize="marquee"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:singleLine="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textColor="@android:color/black"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textSize="16sp"/></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <TextView</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:id="@+id/item_text2"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="wrap_content"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:text=":)"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textColor="@android:color/holo_blue_bright"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textSize="12sp"/></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> </LinearLayout></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></RelativeLayout></span></span></span></div>
<pre style="background-color: white; color: black; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"><span style="color: #073763;"> </span></pre>
<h2 style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="color: red;"><u><span style="color: red; font-size: small;"><span style="color: red; font-size: x-small;"><span style="font-size: small;"><span style="font-weight: normal;"><span style="color: #073763;">MyRecyclerHolder.java</span></span></span></span></span></u></span></h2>
<div style="background-color: white; color: black; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">package </span>com.rajeshvijayakumar.recycler;<br /><br /><span style="color: navy;">import </span>android.support.v7.widget.RecyclerView;<br /><span style="color: navy;">import </span>android.view.View;<br /><span style="color: navy;">import </span>android.widget.ImageView;<br /><span style="color: navy;">import </span>android.widget.TextView;</span></span></div>
<div style="background-color: white; color: black; text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: navy;">public class </span>MyRecyclerHolder <span style="color: navy;">extends </span>RecyclerView.ViewHolder {</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;"> </span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: navy;">public </span>TextView <span style="color: #660e7a;">textView</span>;</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">public </span>ImageView <span style="color: #660e7a;">imageView</span>;</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">public </span>TextView <span style="color: #660e7a;">textView2</span>;</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;"> </span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: navy;"> public </span>MyRecyclerHolder(View <span style="background-color: #e4e4ff;">view</span>) {</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">super</span>(<span style="background-color: #e4e4ff;">view</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">this</span>.<span style="color: #660e7a;">imageView </span>= (ImageView) <span style="background-color: #e4e4ff;">view</span>.findViewById(R.id.<span style="color: #660e7a; font-style: italic;">item_icon</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">this</span>.<span style="color: #660e7a;">textView </span>= (TextView) <span style="background-color: #e4e4ff;">view</span>.findViewById(R.id.<span style="color: #660e7a; font-style: italic;">item_text</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">this</span>.<span style="color: #660e7a;">textView2 </span>=(TextView) <span style="background-color: #e4e4ff;">view</span>.findViewById(R.id.<span style="color: #660e7a; font-style: italic;">item_text2</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> }</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;">}</span></span></div>
<pre style="background-color: white; font-family: "dejavu sans mono"; font-size: 9pt;"><span style="color: #073763;">
</span></pre>
<h2 style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="color: red; font-size: small;"><u><span style="font-weight: normal;"><span style="font-size: medium;">MyRecyclerAdapter.java</span></span></u></span></h2>
<div style="background-color: white; text-align: left;">
<span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">package com.rajeshvijayakumar.recycler;<br /><br />import android.content.Context;<br />import android.support.v7.widget.RecyclerView;<br />import android.view.LayoutInflater;<br />import android.view.View;<br />import android.view.ViewGroup;</span></span></span></div>
<div style="background-color: white; text-align: left;">
<span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="font-style: italic;"><br /></span>public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerHolder> {<br /><br /> String[] menus;<br /> Context adapContext;</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">public MyRecyclerAdapter(Context context, String[] menu) {</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">adapContext = context;</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">menus = menu;<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">@Override<br /> public MyRecyclerHolder onCreateViewHolder(ViewGroup viewGroup, int i) {<br /> View view = LayoutInflater.<span style="font-style: italic;">from</span>(viewGroup.getContext()).inflate(<br /> R.layout.<span style="font-style: italic;">item</span>, null);<br /> MyRecyclerHolder viewHolder = new MyRecyclerHolder(view);</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">return viewHolder;<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">@Override<br /> public void onBindViewHolder(MyRecyclerHolder viewHolder, int i) {</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="font-style: italic;">//</span><span style="font-style: italic;"> </span>int length = (menus != null && menus.length > 0) ? menus.length : 0;</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">if (i < length) {<br /> viewHolder.textView.setText(menus[i]);<br /> }<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">@Override<br /> public int getItemCount() {</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">return (null != menus ? menus.length : 0);<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="font-style: italic;">//</span></span></span></span></div>
<span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">}</span></span></span><br />
<div style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="font-size: small;"><span style="color: #073763;"><br /></span></span></div>
<div style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="font-size: small;"><span style="color: red;"><u>RecyclerDemoActivity.java</u></span></span></div>
<div style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<br /></div>
<div style="background-color: white; color: black; font-family: "dejavu sans mono"; font-size: 9pt; text-align: left;">
<span style="font-size: small;"><span style="color: #073763;">package com.rajeshvijayakumar.recycler;<br /><br />import android.os.Bundle;<br />import android.support.v7.app.AppCompatActivity;<br />import android.support.v7.widget.LinearLayoutManager;<br />import android.support.v7.widget.RecyclerView;</span></span></div>
<div style="background-color: white; color: black; font-family: "dejavu sans mono"; font-size: 9pt; text-align: left;">
<span style="font-size: small;"><span style="color: #073763;"><span style="font-style: italic;"><br /></span>public class RecyclerDemoActivity extends AppCompatActivity {<br /><br /> private RecyclerView mRecyclerView;<br /> private MyRecyclerAdapter adapter;<br /> private String[] menus = { "item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10",<br /> "item11", "item12", "item13", "item14", "item15", "item16", "item17", "item18", "item19", "item20"};<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.<span style="font-style: italic;">activity_main</span>);<br /><br /> <span style="font-style: italic;">// Initialize recycler view</span><span style="font-style: italic;"> </span>mRecyclerView = (RecyclerView) findViewById(R.id.<span style="font-style: italic;">recycler_view</span>);<br /> LinearLayoutManager layoutManager = new LinearLayoutManager(this);<br /> layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);<br /> mRecyclerView.setLayoutManager(layoutManager);<br /> adapter = new MyRecyclerAdapter(this, menus);<br /> mRecyclerView.setAdapter(adapter);<br /> }<br />}</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5FrcPnnvrT7W8DZ59whihyRmFT0BGKWeujzGiB-fSOWkw5upcyLKZMRG_qo6pv5dU3BjhuosJuBkq1PR_ubAGFp98F0XvvwRjZkCxov1m-QBHnMv4IY-dY2mQKUCYsrgb7dFBlvtCeKI/s1600/horizontalrecyclerview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<h2 style="text-align: left;">
<span style="color: red;"><span style="color: red;"><span style="font-weight: normal;"><span style="color: red;"><u><span style="font-size: small;"><span style="color: #073763;">Output :</span></span></u></span></span></span></span></h2>
<h2 style="text-align: left;">
<span style="color: red;"><br /></span></h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5FrcPnnvrT7W8DZ59whihyRmFT0BGKWeujzGiB-fSOWkw5upcyLKZMRG_qo6pv5dU3BjhuosJuBkq1PR_ubAGFp98F0XvvwRjZkCxov1m-QBHnMv4IY-dY2mQKUCYsrgb7dFBlvtCeKI/s1600/horizontalrecyclerview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5FrcPnnvrT7W8DZ59whihyRmFT0BGKWeujzGiB-fSOWkw5upcyLKZMRG_qo6pv5dU3BjhuosJuBkq1PR_ubAGFp98F0XvvwRjZkCxov1m-QBHnMv4IY-dY2mQKUCYsrgb7dFBlvtCeKI/s320/horizontalrecyclerview.png" width="180" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GXTtaigC8s1LcnecUkrgZZ7ZF0zfOFI5zPZ6KB4V3aGjU1VVFEVuUs5HmbQ-NsJb6pvoy-KDvUOZzfTz3HqvDhBSO33loEVKmjFw5QYpLesKuxCqr-giud68vNPDcn0y7-5CFbqt7og/s1600/recyclervertical.png" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
</div>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-89447272284677493082016-07-08T14:45:00.002+05:302016-07-08T16:34:14.604+05:30Veritcal List using RecyclerView Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="color: red;"><u><b><span style="font-weight: normal;">activity_main.xml</span></b></u></span></h2>
<div style="text-align: left;">
<div style="background-color: white; color: black; font-family: "DejaVu Sans Mono"; font-size: 9pt; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"><span style="font-style: italic;"><?</span>xml version="1.0" encoding="utf-8"<span style="font-style: italic;">?></span><android.support.v7.widget.RecyclerView<br /> android:id="@+id/recycler_view"<br /> xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> android:background="@android:color/white"<br /> android:layout_gravity="center"<br /> /></span></span></span></div>
<br />
<span style="color: red;"><u><span style="font-weight: normal;">item_view.xml </span></u></span></div>
<div style="text-align: left;">
<span style="color: red;"><span style="font-weight: normal;"><span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?></span></span></span><br />
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"><span style="font-style: italic;"></span></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"><span style="font-style: italic;"></span><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="wrap_content"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:background="#efefef"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_margin="5dp"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <ImageView</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:id="@+id/item_icon"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="40dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="40dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_centerVertical="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentBottom="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentLeft="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentStart="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_alignParentTop="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_marginRight="6dip"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:src="@android:drawable/ic_notification_overlay"/></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <LinearLayout</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="wrap_content"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_toRightOf="@id/item_icon"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_centerVertical="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_margin="5dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:padding="5dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:background="@android:color/white"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:orientation="vertical"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <TextView</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:id="@+id/item_text"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="26dp"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:ellipsize="marquee"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:singleLine="true"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textColor="@android:color/black"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textSize="16sp"/></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> <TextView</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:id="@+id/item_text2"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_width="match_parent"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:layout_height="wrap_content"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:text=":)"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textColor="@android:color/holo_blue_bright"</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> android:textSize="12sp"/></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"> </LinearLayout></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></RelativeLayout></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="color: #073763;"></span></span></span></div>
<pre style="background-color: white; color: black; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"><span style="color: #073763;"> </span></pre>
<h2 style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="color: red;"><span style="color: red; font-size: small;"><u><span style="font-size: medium;"><span style="font-weight: normal;"><span style="color: #073763;">MyRecyclerHolder.java</span></span></span></u></span></span></h2>
<div style="background-color: white; color: black; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">package </span>com.rajeshvijayakumar.recycler;<br /><br /><span style="color: navy;">import </span>android.support.v7.widget.RecyclerView;<br /><span style="color: navy;">import </span>android.view.View;<br /><span style="color: navy;">import </span>android.widget.ImageView;<br /><span style="color: navy;">import </span>android.widget.TextView;</span></span></div>
<div style="background-color: white; color: black; text-align: left;">
<br /></div>
<div style="background-color: white; color: black; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: grey; font-style: italic;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: grey; font-style: italic;"></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: grey; font-style: italic;"></span><span style="color: navy;">public class </span>MyRecyclerHolder <span style="color: navy;">extends </span>RecyclerView.ViewHolder {</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;"> </span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: navy;">public </span>TextView <span style="color: #660e7a;">textView</span>;</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">public </span>ImageView <span style="color: #660e7a;">imageView</span>;</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">public </span>TextView <span style="color: #660e7a;">textView2</span>;</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;"> </span></span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"><span style="color: navy;"> public </span>MyRecyclerHolder(View <span style="background-color: #e4e4ff;">view</span>) {</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">super</span>(<span style="background-color: #e4e4ff;">view</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">this</span>.<span style="color: #660e7a;">imageView </span>= (ImageView) <span style="background-color: #e4e4ff;">view</span>.findViewById(R.id.<span style="color: #660e7a; font-style: italic;">item_icon</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">this</span>.<span style="color: #660e7a;">textView </span>= (TextView) <span style="background-color: #e4e4ff;">view</span>.findViewById(R.id.<span style="color: #660e7a; font-style: italic;">item_text</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> <span style="color: navy;">this</span>.<span style="color: #660e7a;">textView2 </span>=(TextView) <span style="background-color: #e4e4ff;">view</span>.findViewById(R.id.<span style="color: #660e7a; font-style: italic;">item_text2</span>);</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;"> }</span></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #073763; font-size: small;">}</span></span></div>
<pre style="background-color: white; font-family: "dejavu sans mono"; font-size: 9pt;"><span style="color: #073763;">
</span></pre>
<h2 style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="color: red; font-size: small;"><u><span style="font-weight: normal;"><span style="font-size: medium;">MyRecyclerAdapter.java</span></span></u></span></h2>
<div style="background-color: white; font-family: "dejavu sans mono"; font-size: 9pt; text-align: left;">
<span style="color: #073763;"></span></div>
<div style="background-color: white; text-align: left;">
<span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">package com.rajeshvijayakumar.recycler;<br /><br />import android.content.Context;<br />import android.support.v7.widget.RecyclerView;<br />import android.view.LayoutInflater;<br />import android.view.View;<br />import android.view.ViewGroup;<span style="font-style: italic;"></span></span></span></span></div>
<div style="background-color: white; text-align: left;">
<span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="font-style: italic;"><br /></span>public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerHolder> {<br /><br /> String[] menus;<br /> Context adapContext;</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">public MyRecyclerAdapter(Context context, String[] menu) {</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">adapContext = context;</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">menus = menu;<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">@Override<br /> public MyRecyclerHolder onCreateViewHolder(ViewGroup viewGroup, int i) {<br /> View view = LayoutInflater.<span style="font-style: italic;">from</span>(viewGroup.getContext()).inflate(<br /> R.layout.<span style="font-style: italic;">item</span>, null);<br /> MyRecyclerHolder viewHolder = new MyRecyclerHolder(view);</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">return viewHolder;<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">@Override<br /> public void onBindViewHolder(MyRecyclerHolder viewHolder, int i) {</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="font-style: italic;">//</span><span style="font-style: italic;"> </span>int length = (menus != null && menus.length > 0) ? menus.length : 0;</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">if (i < length) {<br /> viewHolder.textView.setText(menus[i]);<br /> }<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">@Override<br /> public int getItemCount() {</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">return (null != menus ? menus.length : 0);<br /> }</span></span></span> <span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;"><span style="font-style: italic;">//</span></span></span></span></div>
<span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">}</span></span></span><br />
<div style="text-align: left;">
<span style="font-size: small;"><span style="color: #073763;"><span style="font-family: "arial" , "helvetica" , sans-serif;"></span></span></span></div>
<div style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="font-size: small;"><span style="color: #073763;"><br /></span></span></div>
<div style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<span style="font-size: small;"><span style="color: red;"><u>RecyclerDemoActivity.java</u></span></span></div>
<div style="background-color: white; font-family: "dejavu sans mono"; text-align: left;">
<br /></div>
<div style="background-color: white; color: black; font-family: "dejavu sans mono"; font-size: 9pt; text-align: left;">
<span style="font-size: small;"><span style="color: #073763;">package com.rajeshvijayakumar.recycler;<br /><br />import android.os.Bundle;<br />import android.support.v7.app.AppCompatActivity;<br />import android.support.v7.widget.LinearLayoutManager;<br />import android.support.v7.widget.RecyclerView;<span style="font-style: italic;"></span></span></span></div>
<div style="background-color: white; color: black; font-family: "dejavu sans mono"; font-size: 9pt; text-align: left;">
<span style="font-size: small;"><span style="color: #073763;"><span style="font-style: italic;"><br /></span>public class RecyclerDemoActivity extends AppCompatActivity {<br /><br /> private RecyclerView mRecyclerView;<br /> private MyRecyclerAdapter adapter;<br /> private String[] menus = { "item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10",<br /> "item11", "item12", "item13", "item14", "item15", "item16", "item17", "item18", "item19", "item20"};<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.<span style="font-style: italic;">activity_main</span>);<br /><br /> <span style="font-style: italic;">// Initialize recycler view</span><span style="font-style: italic;"> </span>mRecyclerView = (RecyclerView) findViewById(R.id.<span style="font-style: italic;">recycler_view</span>);<br /> LinearLayoutManager layoutManager = new LinearLayoutManager(this);<br /> layoutManager.setOrientation(LinearLayoutManager.<span style="font-style: italic;">VERTICAL</span>);<br /> mRecyclerView.setLayoutManager(layoutManager);<br /> adapter = new MyRecyclerAdapter(this, menus);<br /> mRecyclerView.setAdapter(adapter);<br /> }<br />}</span></span><br />
<br />
<h2 style="text-align: left;">
<span style="font-weight: normal;"><span style="color: red;"><u><span style="font-size: small;"><span style="color: #073763;">Output :</span></span></u></span></span></h2>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GXTtaigC8s1LcnecUkrgZZ7ZF0zfOFI5zPZ6KB4V3aGjU1VVFEVuUs5HmbQ-NsJb6pvoy-KDvUOZzfTz3HqvDhBSO33loEVKmjFw5QYpLesKuxCqr-giud68vNPDcn0y7-5CFbqt7og/s1600/recyclervertical.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8GXTtaigC8s1LcnecUkrgZZ7ZF0zfOFI5zPZ6KB4V3aGjU1VVFEVuUs5HmbQ-NsJb6pvoy-KDvUOZzfTz3HqvDhBSO33loEVKmjFw5QYpLesKuxCqr-giud68vNPDcn0y7-5CFbqt7og/s320/recyclervertical.png" width="180" /></a></div>
</div>
<pre style="background-color: white; color: black; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"></pre>
<pre style="background-color: white; color: black; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"></pre>
<pre style="background-color: white; color: black; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"></pre>
<pre style="background-color: white; color: black; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"></pre>
</div>
<div style="text-align: left;">
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-75774463254975146482015-08-02T12:41:00.003+05:302015-08-02T12:41:45.883+05:30Uber Like Setting Location by dragging a map in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="color: red;"><u><b><span style="font-weight: normal;">activity_main.xml</span></b></u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent" ><br /><br /> <fragment<br /> android:id="@+id/map"<br /> android:name="com.rajeshvijayakumar.map.demo.ui.CustomMapFragment"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent" /><br /><br /> <include<br /> android:id="@+id/marker_view_incl"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> layout="@layout/marker_view" /><br /><br /> <include<br /> android:id="@+id/location_display_incl"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentTop="true"<br /> android:layout_centerHorizontal="true"<br /> android:layout_margin="7dp"<br /> layout="@layout/location_display_view" /><br /><br /></RelativeLayout></span></div>
<h2 style="text-align: left;">
<span style="color: #073763;"> </span><span style="color: red;"><u><span style="font-weight: normal;">marker_view.xml </span></u></span></h2>
<div style="text-align: left;">
<span style="color: red;"><span style="font-weight: normal;"><span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <ImageView<br /> android:id="@+id/marker_icon_view"<br /> android:layout_width="60dp"<br /> android:layout_height="60dp"<br /> android:layout_centerInParent="true"<br /> android:layout_marginTop="162dp"<br /> android:contentDescription="@string/app_name"<br /> android:src="@drawable/ic_launcher" /><br /><br /></RelativeLayout></span></span></span></div>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">location_display_view.xml</span></u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;"></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="match_parent"<br /> android:layout_height="60dp"<br /> android:background="@android:color/white" ><br /><br /> <TextView<br /> android:id="@+id/text_view"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_centerHorizontal="true"<br /> android:gravity="center"<br /> android:text="Set Location"<br /> android:textColor="@android:color/holo_green_dark"<br /> android:textSize="12sp" /><br /><br /> <TextView<br /> android:id="@+id/location_text_view"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@id/text_view"<br /> android:layout_centerHorizontal="true"<br /> android:gravity="center"<br /> android:text="Set Location"<br /> android:textColor="@android:color/black"<br /> android:textSize="14sp" /><br /><br /></RelativeLayout></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">MapWrapperLayout.java</span></u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;"> package com.rajeshvijayakumar.map.demo.wrapper;<br /><br />import android.content.Context;<br />import android.view.MotionEvent;<br />import android.widget.FrameLayout;<br /><br />public class MapWrapperLayout extends FrameLayout {<br /><br /> public interface OnDragListener {<br /> public void onDrag(MotionEvent motionEvent);<br /> }<br /><br /> private OnDragListener mOnDragListener;<br /><br /> public MapWrapperLayout(Context context) {<br /> super(context);<br /> }<br /><br /> @Override<br /> public boolean dispatchTouchEvent(MotionEvent ev) {<br /> if (mOnDragListener != null) {<br /> mOnDragListener.onDrag(ev);<br /> }<br /> return super.dispatchTouchEvent(ev);<br /> }<br /><br /> public void setOnDragListener(OnDragListener mOnDragListener) {<br /> this.mOnDragListener = mOnDragListener;<br /> }<br />}</span></div>
<div style="text-align: left;">
<span style="color: #073763;"></span></div>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">CustomMapFragment.java</span></u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;"> package com.rajeshvijayakumar.map.demo.ui;<br /><br />import android.os.Bundle;<br />import android.view.LayoutInflater;<br />import android.view.View;<br />import android.view.ViewGroup;<br /><br />import com.google.android.gms.maps.MapFragment;<br />import com.rajeshvijayakumar.map.demo.wrapper.MapWrapperLayout;<br /><br />public class CustomMapFragment extends MapFragment {<br /><br /> private View mOriginalView;<br /> private MapWrapperLayout mMapWrapperLayout;<br /><br /> @Override<br /> public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {<br /> mOriginalView = super.onCreateView(inflater, container, savedInstanceState);<br /><br /> mMapWrapperLayout = new MapWrapperLayout(getActivity());<br /> mMapWrapperLayout.addView(mOriginalView);<br /><br /> return mMapWrapperLayout;<br />}<br /><br /> @Override<br /> public View getView() {<br /> return mOriginalView;<br /> }<br /><br /> public void setOnDragListener(MapWrapperLayout.OnDragListener onDragListener) {<br /> mMapWrapperLayout.setOnDragListener(onDragListener);<br /> }<br />}</span></div>
<div style="text-align: left;">
<span style="color: #073763;"></span></div>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">MainActivity.java</span></u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;">package com.rajeshvijayakumar.map.demo;<br /><br />import java.io.IOException;<br />import java.util.ArrayList;<br />import java.util.List;<br />import java.util.Locale;<br /><br />import android.app.Activity;<br />import android.graphics.Point;<br />import android.location.Address;<br />import android.location.Geocoder;<br />import android.os.Bundle;<br />import android.util.DisplayMetrics;<br />import android.view.MotionEvent;<br />import android.view.View;<br />import android.widget.ImageView;<br />import android.widget.TextView;<br />import android.widget.Toast;<br /><br />import com.</span><span style="color: #073763;"><span style="color: #073763;">rajeshvijayakumar.map.</span>demo.R;<br />import com.google.android.gms.maps.GoogleMap;<br />import com.google.android.gms.maps.Projection;<br />import com.google.android.gms.maps.model.LatLng;<br />import com.rajeshvijayakumar.map.demo.ui.CustomMapFragment;<br />import com.rajeshvijayakumar.map.demo.wrapper.MapWrapperLayout.OnDragListener;<br /><br />public class MainActivity extends Activity implements OnDragListener {<br /><br /> // Google Map<br /> private GoogleMap googleMap;<br /> private CustomMapFragment mCustomMapFragment;<br /><br /> private View mMarkerParentView;<br /> private ImageView mMarkerImageView;<br /><br /> private int imageParentWidth = -1;<br /> private int imageParentHeight = -1;<br /> private int imageHeight = -1;<br /> private int centerX = -1;<br /> private int centerY = -1;<br /><br /> private TextView mLocationTextView;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /><br /> // InitializeUI<br /> initializeUI();<br /><br /> }<br /><br /> private void initializeUI() {<br /><br /> try {<br /> // Loading map<br /> initilizeMap();<br /><br /> } catch (Exception e) {<br /> e.printStackTrace();<br /> }<br /> mLocationTextView = (TextView) findViewById(R.id.location_text_view);<br /> mMarkerParentView = findViewById(R.id.marker_view_incl);<br /> mMarkerImageView = (ImageView) findViewById(R.id.marker_icon_view);<br /> }<br /><br /> @Override<br /> public void onWindowFocusChanged(boolean hasFocus) {<br /> DisplayMetrics displaymetrics = new DisplayMetrics();<br /> getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);<br /><br /> imageParentWidth = mMarkerParentView.getWidth();<br /> imageParentHeight = mMarkerParentView.getHeight();<br /> imageHeight = mMarkerImageView.getHeight();<br /><br /> centerX = imageParentWidth / 2;<br /> centerY = (imageParentHeight / 2) + (imageHeight / 2);<br /> }<br /><br /> private void initilizeMap() {<br /> if (googleMap == null) {<br /> mCustomMapFragment = ((CustomMapFragment) getFragmentManager()<br /> .findFragmentById(R.id.map));<br /> mCustomMapFragment.setOnDragListener(MainActivity.this);<br /> googleMap = mCustomMapFragment.getMap();<br /> // check if map is created successfully or not<br /> if (googleMap == null) {<br /> Toast.makeText(getApplicationContext(),<br /> "Sorry! unable to create maps", Toast.LENGTH_SHORT)<br /> .show();<br /> }<br /> }<br /> // CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng,<br /> // 10);<br /> // googleMap.animateCamera(cameraUpdate);<br /> // locationManager.removeUpdates(this);<br /> }<br /><br /> @Override<br /> protected void onResume() {<br /> super.onResume();<br /> }<br /><br /> @Override<br /> public void onDrag(MotionEvent motionEvent) {<br /> if (motionEvent.getAction() == MotionEvent.ACTION_UP) {<br /> Projection projection = (googleMap != null && googleMap<br /> .getProjection() != null) ? googleMap.getProjection()<br /> : null;<br /> //<br /> if (projection != null) {<br /> LatLng centerLatLng = projection.fromScreenLocation(new Point(<br /> centerX, centerY));<br /> updateLocation(centerLatLng);<br /> }<br /> }<br /> }<br /><br /> private void updateLocation(LatLng centerLatLng) {<br /> if (centerLatLng != null) {<br /> Geocoder geocoder = new Geocoder(MainActivity.this,<br /> Locale.getDefault());<br /><br /> List<Address> addresses = new ArrayList<Address>();<br /> try {<br /> addresses = geocoder.getFromLocation(centerLatLng.latitude,<br /> centerLatLng.longitude, 1);<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }<br /><br /> if (addresses != null && addresses.size() > 0) {<br /><br /> String addressIndex0 = (addresses.get(0).getAddressLine(0) != null) ? addresses<br /> .get(0).getAddressLine(0) : null;<br /> String addressIndex1 = (addresses.get(0).getAddressLine(1) != null) ? addresses<br /> .get(0).getAddressLine(1) : null;<br /> String addressIndex2 = (addresses.get(0).getAddressLine(2) != null) ? addresses<br /> .get(0).getAddressLine(2) : null;<br /> String addressIndex3 = (addresses.get(0).getAddressLine(3) != null) ? addresses<br /> .get(0).getAddressLine(3) : null;<br /><br /> String completeAddress = addressIndex0 + "," + addressIndex1;<br /><br /> if (addressIndex2 != null) {<br /> completeAddress += "," + addressIndex2;<br /> }<br /> if (addressIndex3 != null) {<br /> completeAddress += "," + addressIndex3;<br /> }<br /> if (completeAddress != null) {<br /> mLocationTextView.setText(completeAddress);<br /> }<br /> }<br /> }<br /> }<br />}<br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;">Expected Output :</span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb0WRjWbGioIFxIsvh0HDmRg2855jH2ja8nzxC5N-E4-Cr4LBrsKdBOAnuypIsV-JYDn6ALI8DRlzFDwpIAewpsEneMVciCooL2fZ6_uViWJmrynfzfI-g7MFOwPzf38Gh3pYmj7zMbnM/s1600/uberlikeloc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb0WRjWbGioIFxIsvh0HDmRg2855jH2ja8nzxC5N-E4-Cr4LBrsKdBOAnuypIsV-JYDn6ALI8DRlzFDwpIAewpsEneMVciCooL2fZ6_uViWJmrynfzfI-g7MFOwPzf38Gh3pYmj7zMbnM/s640/uberlikeloc.png" width="360" /></a></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><br /></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="color: #073763;"> </span></div>
</div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-658265540397047133.post-44343633733106032062015-06-20T17:32:00.000+05:302015-06-20T17:32:13.042+05:30PayuMoney Integration Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">PayUMoneyActivity.java</span></u></span></h2>
<br />@SuppressLint("SetJavaScriptEnabled")<br />public class PayUMoneyActivityextends Activity {<br />
<br /> WebView webView;<br /><br /> String merchant_key = "JBZaLc";<br /> String salt = "GQs7yium";<br /> String action1 = "";<br /> String base_url = "https://test.payu.in";<br /> // int error = 0;<br /> // String hashString = "";<br /> // Map<String, String> params;<br /> String txnid = "TXN8367286482920";<br /> String amount = "1000";<br /> String productInfo = "";<br /> String firstName = "Rajesh";<br /> String emailId = "rajeshmcashc10@gmail.com";<br /><br /> private String SUCCESS_URL = "<Your Transaction SuccessPage Url>";<br /> private String FAILED_URL = "<Your Transaction FailedPage URL>";<br /> private String phone = "<Your Mobile No>";<br />
private String serviceProvider = "payu_paisa";<br /> private String hash = "";<br /><br /> Handler mHandler = new Handler();<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /><br /> super.onCreate(savedInstanceState);<br /> getWindow().requestFeature(Window.FEATURE_PROGRESS);<br /> webView = new WebView(this);<br /> setContentView(webView);<br /><br /> JSONObject productInfoObj = new JSONObject();<br /> JSONArray productPartsArr = new JSONArray();<br /> JSONObject productPartsObj1 = new JSONObject();<br /> JSONObject paymentIdenfierParent = new JSONObject();<br /> JSONArray paymentIdentifiersArr = new JSONArray();<br /> JSONObject paymentPartsObj1 = new JSONObject();<br /> JSONObject paymentPartsObj2 = new JSONObject();<br /> try {<br /> // Payment Parts<br /> productPartsObj1.put("name", "abc");<br /> productPartsObj1.put("description", "abcd");<br /> productPartsObj1.put("value", "1000");<br /> productPartsObj1.put("isRequired", "true");<br /> productPartsObj1.put("settlementEvent", "EmailConfirmation");<br /> productPartsArr.put(productPartsObj1);<br /> productInfoObj.put("paymentParts", productPartsArr);<br /><br /> // Payment Identifiers<br /> paymentPartsObj1.put("field", "CompletionDate");<br /> paymentPartsObj1.put("value", "31/10/2012");<br /> paymentIdentifiersArr.put(paymentPartsObj1);<br /><br /> paymentPartsObj2.put("field", "TxnId");<br /> paymentPartsObj2.put("value", txnid);<br /> paymentIdentifiersArr.put(paymentPartsObj2);<br /><br /> paymentIdenfierParent.put("paymentIdentifiers",<br /> paymentIdentifiersArr);<br /> productInfoObj.put("", paymentIdenfierParent);<br /> } catch (JSONException e) {<br /> // TODO Auto-generated catch block<br /> e.printStackTrace();<br /> }<br /><br /> productInfo = productInfoObj.toString();<br /><br /> Log.e("TAG", productInfoObj.toString());<br /> <br /> Random rand = new Random();<br /> String rndm = Integer.toString(rand.nextInt())<br /> + (System.currentTimeMillis() / 1000L);<br /> txnid = hashCal("SHA-256", rndm).substring(0, 20);<br /> <br /> hash = hashCal("SHA-512", merchant_key + "|" + txnid + "|" + amount<br /> + "|" + productInfo + "|" + firstName + "|" + emailId<br /> + "|||||||||||" + salt);<br /><br /> action1 = base_url.concat("/_payment");<br /><br /> webView.setWebViewClient(new WebViewClient() {<br /><br /> @Override<br /> public void onReceivedError(WebView view, int errorCode,<br /> String description, String failingUrl) {<br /> // TODO Auto-generated method stub<br /> Toast.makeText(activity, "Oh no! " + description,<br /> Toast.LENGTH_SHORT).show();<br /> }<br /><br /> @Override<br /> public void onReceivedSslError(WebView view,<br /> SslErrorHandler handler, SslError error) {<br /> // TODO Auto-generated method stub<br /> Toast.makeText(activity, "SslError! " + error,<br /> Toast.LENGTH_SHORT).show();<br /> handler.proceed();<br /> }<br /><br /> @Override<br /> public boolean shouldOverrideUrlLoading(WebView view, String url) {<br /> Toast.makeText(activity, "Page Started! " + url,<br /> Toast.LENGTH_SHORT).show();<br /> if (url.equals(SUCCESS_URL)) {<br /> Toast.makeText(activity, "Success! " + url,<br /> Toast.LENGTH_SHORT).show();<br /> } else {<br /> Toast.makeText(activity, "Failure! " + url,<br /> Toast.LENGTH_SHORT).show();<br /> }<br /> return super.shouldOverrideUrlLoading(view, url);<br /> }<br /> //<br /> // @Override<br /> // public void onPageFinished(WebView view, String url) {<br /> // super.onPageFinished(view, url);<br /> //<br /> // Toast.makeText(PayMentGateWay.this, "" + url,<br /> // Toast.LENGTH_SHORT).show();<br /> // }<br /> });<br /><br /> webView.setVisibility(View.VISIBLE);<br /> webView.getSettings().setBuiltInZoomControls(true);<br /> webView.getSettings().setCacheMode(2);<br /> webView.getSettings().setDomStorageEnabled(true);<br /> webView.clearHistory();<br /> webView.clearCache(true);<br /> webView.getSettings().setJavaScriptEnabled(true);<br /> webView.getSettings().setSupportZoom(true);<br /> webView.getSettings().setUseWideViewPort(false);<br /> webView.getSettings().setLoadWithOverviewMode(false);<br /><br /> webView.addJavascriptInterface(new PayUJavaScriptInterface(activity),<br /> "PayUMoney");<br /> Map<String, String> mapParams = new HashMap<String, String>();<br /> mapParams.put("key", merchant_key);<br /> mapParams.put("hash", hash);<br /> mapParams.put("txnid", txnid);<br /> mapParams.put("service_provider", "payu_paisa");<br /> mapParams.put("amount", amount);<br /> mapParams.put("firstname", firstName);<br /> mapParams.put("email", emailId);<br /> mapParams.put("phone", phone);<br /><br /> mapParams.put("productinfo", productInfo);<br /> mapParams.put("surl", SUCCESS_URL);<br /> mapParams.put("furl", FAILED_URL);<br /> mapParams.put("lastname", "Vijayakumar");<br /><br /> mapParams.put("address1", "");<br /> mapParams.put("address2", "");<br /> mapParams.put("city", "");<br /> mapParams.put("state", "");<br /><br /> mapParams.put("country", "");<br /> mapParams.put("zipcode", "");<br /> mapParams.put("udf1", "");<br /> mapParams.put("udf2", "");<br /><br /> mapParams.put("udf3", "");<br /> mapParams.put("udf4", "");<br /> mapParams.put("udf5", "");<br /> // mapParams.put("pg", (empty(PayMentGateWay.this.params.get("pg"))) ?<br /> // ""<br /> // : PayMentGateWay.this.params.get("pg"));<br /> webview_ClientPost(webView, action1, mapParams.entrySet());<br /><br /> }<br /><br /> public class PayUJavaScriptInterface {<br /> Context mContext;<br /><br /> /** Instantiate the interface and set the context */<br /> PayUJavaScriptInterface(Context c) {<br /> mContext = c;<br /> }<br /><br /> public void success(long id, final String paymentId) {<br /><br /> mHandler.post(new Runnable() {<br /><br /> public void run() {<br /> mHandler = null;<br /> Toast.makeText(PayMentGateWay.this, "Success",<br /> Toast.LENGTH_SHORT).show();<br /> }<br /> });<br /> }<br /> }<br /> public void webview_ClientPost(WebView webView, String url,<br /> Collection<Map.Entry<String, String>> postData) {<br /> StringBuilder sb = new StringBuilder();<br /><br /> sb.append("<html><head></head>");<br /> sb.append("<body onload='form1.submit()'>");<br /> sb.append(String.format("<form id='form1' action='%s' method='%s'>",<br /> url, "post"));<br /> for (Map.Entry<String, String> item : postData) {<br /> sb.append(String.format(<br /> "<input name='%s' type='hidden' value='%s' />",<br /> item.getKey(), item.getValue()));<br /> }<br /> sb.append("</form></body></html>");<br /> Log.d(tag, "webview_ClientPost called");<br /> webView.loadData(sb.toString(), "text/html", "utf-8");<br /> }<br /><br /> public boolean empty(String s) {<br /> if (s == null || s.trim().equals(""))<br /> return true;<br /> else<br /> return false;<br /> }<br /><br /> public String hashCal(String type, String str) {<br /> byte[] hashseq = str.getBytes();<br /> StringBuffer hexString = new StringBuffer();<br /> try {<br /> MessageDigest algorithm = MessageDigest.getInstance(type);<br /> algorithm.reset();<br /> algorithm.update(hashseq);<br /> byte messageDigest[] = algorithm.digest();<br /><br /> for (int i = 0; i < messageDigest.length; i++) {<br /> String hex = Integer.toHexString(0xFF & messageDigest[i]);<br /> if (hex.length() == 1)<br /> hexString.append("0");<br /> hexString.append(hex);<br /> }<br /> } catch (NoSuchAlgorithmException nsae) {<br /> }<br /> return hexString.toString();<br /><br /> }<br /><br />}<br />
<br />
Expected Output :<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpXFo0BzQeGuSLqPwQpc23XHEkkE2A89HYQYYPaWz-WX_qLaKTFSuxxEzjx-Zw4YJY1jpwPi-9X8U9yTvbTgcRE4yBv3c2-DyCzyu3WY7jBi37AYO7mgr1GvGPWxRx1LeF6mfxbPEWKH0/s1600/device-2015-06-20-172830.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpXFo0BzQeGuSLqPwQpc23XHEkkE2A89HYQYYPaWz-WX_qLaKTFSuxxEzjx-Zw4YJY1jpwPi-9X8U9yTvbTgcRE4yBv3c2-DyCzyu3WY7jBi37AYO7mgr1GvGPWxRx1LeF6mfxbPEWKH0/s640/device-2015-06-20-172830.png" width="360" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Source Code in Github :</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Coming Soon ...</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br /></div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-658265540397047133.post-11516566144062903392014-09-07T00:56:00.000+05:302014-09-07T00:56:48.928+05:30List Fragment Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><u>activity_main.xml</u></span></h3>
<span style="color: #0b5394;"><span style="color: #073763;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> android:orientation="horizontal" ><br /><br /> <fragment<br /> android:id="@+id/fragment"<br /> android:layout_width="360dp"<br /> android:layout_height="match_parent"<br /> class="org.rajeshvijayakumar.fragments.MenuFragment" /><br /><br /> <View android:id="@+id/dummy_view"<br /> android:layout_width="2dp"<br /> android:layout_height="match_parent"<br /> android:background="@android:color/darker_gray" /><br /> <RelativeLayout<br /> android:id="@+id/fragment2"<br /> android:layout_width="fill_parent"<br /> android:layout_height="match_parent" /><br /><br /></LinearLayout></span></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u>list_fragment.xml</u></span></h3>
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:id="@+id/pref_frag_container"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent" ><br /> <ListView<br /> android:layout_width="match_parent"<br /> android:layout_height="wrap_content"<br /> android:id="@android:id/list" /><br /></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u>text_fragment.xml</u></span></h3>
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:orientation="vertical"<br /> android:layout_width="fill_parent"<br /> android:gravity="center"<br /> android:background="@android:color/white"<br /> android:layout_height="match_parent"><br /> <TextView<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:textSize="21sp"<br /> android:textColor="@android:color/holo_purple"<br /> android:layout_gravity="center"<br /> android:id="@+id/name_text_view"/><br /></LinearLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u>MainActivity.java</u></span></h3>
<span style="color: #073763;">package org.rajeshvijayakumar.fragments;<br /><br />import android.os.Bundle;<br />import android.support.v4.app.FragmentActivity;<br /><br />public class MainActivity extends FragmentActivity {<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> }<br />}</span><br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<span style="color: red;"><u>MenuFragment.java</u></span></h3>
<span style="color: #073763;">package org.rajeshvijayakumar.fragments;<br /><br />import android.app.Fragment;<br />import android.app.FragmentManager;<br />import android.app.FragmentTransaction;<br />import android.app.ListFragment;<br />import android.os.Bundle;<br />import android.view.LayoutInflater;<br />import android.view.View;<br />import android.view.ViewGroup;<br />import android.widget.ArrayAdapter;<br />import android.widget.ListView;<br /><br />public class MenuFragment extends ListFragment {<br /> String[] names = new String[] { "Rajesh", "Mahesh", "Mrithula", "Sonika",<br /> "Ramachander", "Sriram", "Omji", "Raji" };<br /> <br /> @Override<br /> public View onCreateView(LayoutInflater inflater, ViewGroup container,<br /> Bundle savedInstanceState) {<br /> View view = inflater.inflate(R.layout.list_fragment, container, false);<br /> ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),<br /> android.R.layout.simple_list_item_1, names);<br /> setListAdapter(adapter);<br /> return view;<br /> }<br /><br /> @Override<br /> public void onListItemClick(ListView l, View v, int position, long id) {<br /><br /> FragmentManager fragmentManager = getFragmentManager();<br /> FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();<br /> Fragment fragment = new TextFragment();<br /> <br /> Bundle bundle = new Bundle();<br /> bundle.putString("names", names[position]);<br /> fragment.setArguments(bundle);<br /> fragmentTransaction.add(R.id.fragment2, fragment, "Fragment");<br /> fragmentTransaction.commit();<br /> getListView().setSelector(android.R.color.holo_blue_dark);<br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u>TextFragment.java</u></span></h3>
<br />
<span style="color: #073763;">package org.rajeshvijayakumar.fragments;<br /><br />import android.app.Fragment;<br />import android.os.Bundle;<br />import android.view.LayoutInflater;<br />import android.view.View;<br />import android.view.ViewGroup;<br />import android.widget.TextView;<br />public class TextFragment extends Fragment {<br /> TextView text,vers;<br /> @Override<br /> public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {<br /> View view = inflater.inflate(R.layout.text_fragment, container, false);<br /> text= (TextView) view.findViewById(R.id.name_text_view);<br /> Bundle bundle = getArguments();<br /> String name = bundle.getString("names");<br /> text.setText(name);<br /> <br /> return view;<br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u>AndroidMainfest.xml</u></span></h3>
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="org.rajeshvijayakumar.fragments"<br /> android:versionCode="1"<br /> android:versionName="1.0" ><br /><br /> <uses-sdk<br /> android:minSdkVersion="14"<br /> android:targetSdkVersion="21" /><br /><br /> <application<br /> android:allowBackup="true"<br /> android:icon="@drawable/ic_launcher"<br /> android:label="@string/app_name"<br /> android:theme="@style/AppTheme" ><br /> <activity<br /> android:name=".MainActivity"<br /> android:label="@string/app_name"<br /> android:screenOrientation="landscape" ><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /> </application><br /><br /></manifest></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u>Output :</u></span></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLpgInfZFKLc2NbQoyAmHRgHNJ3cRwX-wU56wZTak67Auvq-T7YU8myIwERlyfGIPGhEIO14xrRsKzgE2MfY_u7UpR7bKbtphVT_Fk_5uUwnw7062a6k_O7GtlpC9v4N2rYlZSK6Tiey4/s1600/device-2014-09-07-003945.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLpgInfZFKLc2NbQoyAmHRgHNJ3cRwX-wU56wZTak67Auvq-T7YU8myIwERlyfGIPGhEIO14xrRsKzgE2MfY_u7UpR7bKbtphVT_Fk_5uUwnw7062a6k_O7GtlpC9v4N2rYlZSK6Tiey4/s1600/device-2014-09-07-003945.png" height="384" width="640" /></a></div>
<br />
<br />
<br />
Source in Github Repo.......<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-18090131066439617532014-08-19T12:21:00.000+05:302014-08-19T12:49:47.631+05:30Address based Location Search in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="color: red;"><u>activity_main.xml</u></span></h2>
<br />
<span style="color: #073763;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> tools:context=".MainActivity" ><br /><br /> <Button<br /> android:id="@+id/find_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentRight="true"<br /> android:layout_alignParentTop="true"<br /> android:text="@string/find" /><br /><br /> <EditText<br /> android:id="@+id/search_edittext"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:layout_toLeftOf="@id/find_button"<br /> android:hint="@string/hint"<br /> android:inputType="text" /><br /><br /> <fragment<br /> android:id="@+id/map"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> android:layout_below="@id/search_edittext"<br /> class="com.google.android.gms.maps.SupportMapFragment" /><br /><br /></RelativeLayout></span><br />
<h2 style="text-align: left;">
</h2>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">MainActivity.java</span></u></span></h2>
<span style="color: #073763;"></span><br />
<span style="color: #073763;">package com.rajeshvijayakumar.mapaddr;<br /><br />import java.io.BufferedReader;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.io.InputStreamReader;<br />import java.io.UnsupportedEncodingException;<br />import java.net.HttpURLConnection;<br />import java.net.URL;<br />import java.net.URLEncoder;<br />import java.util.HashMap;<br />import java.util.List;<br /><br />import org.json.JSONObject;<br /><br />import android.os.AsyncTask;<br />import android.os.Bundle;<br />import android.support.v4.app.FragmentActivity;<br />import android.util.Log;<br />import android.view.Menu;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.EditText;<br />import android.widget.Toast;<br /><br />import com.google.android.gms.maps.CameraUpdateFactory;<br />import com.google.android.gms.maps.GoogleMap;<br />import com.google.android.gms.maps.SupportMapFragment;<br />import com.google.android.gms.maps.model.LatLng;<br />import com.google.android.gms.maps.model.MarkerOptions;<br /><br />public class MainActivity extends FragmentActivity {<br /><br /> private Button mFindButton;<br /> private GoogleMap mMap;<br /> private EditText mSearchEditText;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /><br /> mFindButton = (Button) findViewById(R.id.find_button);<br /> SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()<br /> .findFragmentById(R.id.map);<br /> mMap = mapFragment.getMap();<br /> mSearchEditText = (EditText) findViewById(R.id.search_edittext);<br /> mFindButton.setOnClickListener(new OnClickListener() {<br /><br /> @Override<br /> public void onClick(View v) {<br /> String location = mSearchEditText.getText().toString();<br /> if (location == null || location.equals("")) {<br /> Toast.makeText(getBaseContext(), "No Place is entered",<br /> Toast.LENGTH_SHORT).show();<br /> return;<br /> }<br /> String url = "https://maps.googleapis.com/maps/api/geocode/json?";<br /> try {<br /> location = URLEncoder.encode(location, "utf-8");<br /> } catch (UnsupportedEncodingException e) {<br /> e.printStackTrace();<br /> }<br /> String address = "address=" + location;<br /> String sensor = "sensor=false";<br /> url = url + address + "&" + sensor;<br /> DownloadTask downloadTask = new DownloadTask();<br /> downloadTask.execute(url);<br /><br /> }<br /> });<br /><br /> }<br /><br /> private String downloadUrl(String strUrl) throws IOException {<br /> String data = "";<br /> InputStream iStream = null;<br /> HttpURLConnection urlConnection = null;<br /> try {<br /> URL url = new URL(strUrl);<br /> urlConnection = (HttpURLConnection) url.openConnection();<br /> urlConnection.connect();<br /> iStream = urlConnection.getInputStream();<br /> BufferedReader br = new BufferedReader(new InputStreamReader(iStream));<br /> StringBuffer sb = new StringBuffer();<br /><br /> String line = "";<br /> while ((line = br.readLine()) != null) {<br /> sb.append(line);<br /> }<br /><br /> data = sb.toString();<br /><br /> br.close();<br /><br /> } catch (Exception e) {<br /> Log.d("Exception", e.toString());<br /> } finally {<br /> iStream.close();<br /> urlConnection.disconnect();<br /> }<br /><br /> return data;<br /><br /> }<br /><br /> private class DownloadTask extends AsyncTask<String, Integer, String> {<br /><br /> String data = null;<br /><br /> @Override<br /> protected String doInBackground(String... url) {<br /> try {<br /> data = downloadUrl(url[0]);<br /> } catch (Exception e) {<br /> Log.d("Background Task", e.toString());<br /> }<br /> return data;<br /> }<br /><br /> @Override<br /> protected void onPostExecute(String result) {<br /> ParserTask parserTask = new ParserTask();<br /> parserTask.execute(result);<br /> }<br /><br /> }<br /><br /> class ParserTask extends<br /> AsyncTask<String, Integer, List<HashMap<String, String>>> {<br /><br /> JSONObject jObject;<br /><br /> @Override<br /> protected List<HashMap<String, String>> doInBackground(<br /> String... jsonData) {<br /><br /> List<HashMap<String, String>> places = null;<br /> GeoParser parser = new GeoParser();<br /><br /> try {<br /> jObject = new JSONObject(jsonData[0]);<br /> places = parser.parseData(jObject);<br /><br /> } catch (Exception e) {<br /> Log.d("Exception", e.toString());<br /> }<br /> return places;<br /> }<br /><br /> @Override<br /> protected void onPostExecute(List<HashMap<String, String>> list) {<br /><br /> mMap.clear();<br /> for (int i = 0; i < list.size(); i++) {<br /> MarkerOptions markerOptions = new MarkerOptions();<br /> HashMap<String, String> hmPlace = list.get(i);<br /> double lat = Double.parseDouble(hmPlace.get("lat"));<br /> double lng = Double.parseDouble(hmPlace.get("lng"));<br /> String name = hmPlace.get("formatted_address");<br /> LatLng latLng = new LatLng(lat, lng);<br /> markerOptions.position(latLng);<br /> markerOptions.title(name);<br /> mMap.addMarker(markerOptions);<br /> if (i == 0)<br /> mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));<br /> }<br /> }<br /> }<br />}</span><br />
<br />
<h2 style="text-align: left;">
<span style="color: red;"><u>GeoParser.java</u></span></h2>
<br />
<span style="color: #073763;">package com.rajeshvijayakumar.mapaddr;<br /><br />import java.util.ArrayList;<br />import java.util.HashMap;<br />import java.util.List;<br /><br />import org.json.JSONArray;<br />import org.json.JSONException;<br />import org.json.JSONObject;<br /><br />public class GeoParser {<br /><br /> public List<HashMap<String, String>> parseData(JSONObject jObject) {<br /><br /> JSONArray jPlaces = null;<br /> try {<br /> jPlaces = jObject.getJSONArray("results");<br /> } catch (JSONException e) {<br /> e.printStackTrace();<br /> }<br /><br /> return getPlaces(jPlaces);<br /> }<br /><br /> private List<HashMap<String, String>> getPlaces(JSONArray jPlaces) {<br /> int placesCount = jPlaces.length();<br /> List<HashMap<String, String>> placesList = new ArrayList<HashMap<String, String>>();<br /> HashMap<String, String> place = null;<br /><br /> for (int i = 0; i < placesCount; i++) {<br /> try {<br /> place = getPlaces((JSONObject) jPlaces.get(i));<br /> placesList.add(place);<br /><br /> } catch (JSONException e) {<br /> e.printStackTrace();<br /> }<br /> }<br /><br /> return placesList;<br /> }<br /><br /> private HashMap<String, String> getPlaces(JSONObject jPlace) {<br /><br /> HashMap<String, String> place = new HashMap<String, String>();<br /> String formatted_address = "-NA-";<br /> String lat = "";<br /> String lng = "";<br /><br /> try {<br /> // Extracting formatted address, if available<br /> if (!jPlace.isNull("formatted_address")) {<br /> formatted_address = jPlace.getString("formatted_address");<br /> }<br /><br /> lat = jPlace.getJSONObject("geometry").getJSONObject("location")<br /> .getString("lat");<br /> lng = jPlace.getJSONObject("geometry").getJSONObject("location")<br /> .getString("lng");<br /><br /> place.put("formatted_address", formatted_address);<br /> place.put("lat", lat);<br /> place.put("lng", lng);<br /><br /> } catch (JSONException e) {<br /> e.printStackTrace();<br /> }<br /> return place;<br /> }<br />}</span><br />
<br />
<h2 style="text-align: left;">
<span style="color: red;"><u>Manifest.xml</u></span></h2>
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="com.rajeshvijayakumar.mapaddr"<br /> android:versionCode="1"<br /> android:versionName="1.0" ><br /><br /> <uses-sdk<br /> android:minSdkVersion="8"<br /> android:targetSdkVersion="21" /><br /><br /> <permission<br /> android:name="com.rajeshvijayakumar.mapaddr.permission.MAPS_RECEIVE"<br /> android:protectionLevel="signature" /><br /><br /> <uses-permission android:name="com.rajeshvijayakumar.mapaddr.permission.MAPS_RECEIVE" /><br /> <uses-permission android:name="android.permission.INTERNET" /><br /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><br /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><br /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /><br /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><br /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><br /><br /> <uses-feature<br /> android:glEsVersion="0x00020000"<br /> android:required="true" /><br /><br /> <application<br /> android:allowBackup="true"<br /> android:icon="@drawable/ic_launcher"<br /> android:label="@string/app_name"<br /> android:theme="@style/AppTheme" ><br /> <activity<br /> android:name="com.rajeshvijayakumar.mapaddr.MainActivity"<br /> android:label="@string/app_name" ><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /><br /> <meta-data<br /> android:name="com.google.android.maps.v2.API_KEY"<br /> android:value="YOUR_ANDROID_API_KEY_FROM_CONSOLE" /><br /> <meta-data<br /> android:name="com.google.android.gms.version"<br /> android:value="@integer/google_play_services_version" /><br /> </application><br /><br /></manifest></span><br />
<br />
<h2 style="text-align: left;">
<span style="color: red;"><u>Output :</u></span></h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTm0OboFvsaSHGMtp_z0xjNrr15C2qB4d8PvhUWY1wh7B9xgn1x3ySsU-CGJ08ixAKgHoVZrPuO21k_4ifEPQPMf_Hi2EpzlLx6NlWvxtfZlfVhbMaONIU3FyzJIC_ODWoAfwXQwFi934/s1600/Screenshot_2014-08-19-12-47-06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTm0OboFvsaSHGMtp_z0xjNrr15C2qB4d8PvhUWY1wh7B9xgn1x3ySsU-CGJ08ixAKgHoVZrPuO21k_4ifEPQPMf_Hi2EpzlLx6NlWvxtfZlfVhbMaONIU3FyzJIC_ODWoAfwXQwFi934/s1600/Screenshot_2014-08-19-12-47-06.png" height="640" width="384" /></a></div>
<br />
Source Code: Github Coming soon</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-26466317673047333142014-02-21T16:39:00.001+05:302014-09-09T18:45:32.345+05:30HighLighting the Selected List Item using SingleTon Pattern in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u> Instant Adapter Library Add to your Eclipse Project</u></span></span></h2>
<div style="text-align: left;">
<span style="font-size: large;"> https://github.com/ragunathjawahar/instant-adapter </span></div>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">activity_main.xml</span></u></span></h2>
<br />
<span style="color: #073763;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <ListView<br /> android:id="@+id/demo_list"<br /> android:layout_width="match_parent"<br /> android:layout_height="wrap_content" /><br /><br /></RelativeLayout></span><br />
<br />
<span style="color: red;"><u><b><span style="font-size: large;">list_item.xml</span></b></u></span><br />
<br />
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:id="@+id/par_relative"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <ImageView<br /> android:id="@+id/imageView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_centerVertical="true"<br /> android:layout_marginLeft="12dp"<br /> android:src="@drawable/ic_launcher" /><br /><br /> <TextView<br /> android:id="@+id/textView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_toRightOf="@+id/imageView1"<br /> android:text="Large Text"<br /> android:layout_centerVertical="true"<br /> android:textAppearance="?android:attr/textAppearanceLarge" /><br /><br /></RelativeLayout></span><br />
<br />
<h2 style="text-align: left;">
<span style="color: red;"><u>Contact.java</u></span></h2>
<span style="color: #073763;">package com.example.insta;<br /><br />public class Contact {<br /><br /> private int drawableResId;<br /> private String contactName;<br /><br /> public Contact(int drawableResId, String contactName) {<br /> this.drawableResId = drawableResId;<br /> this.contactName = contactName;<br /> }<br /><br /> public int getDrawableResId() {<br /> return drawableResId;<br /> }<br /><br /> public void setDrawableResId(int drawableResId) {<br /> this.drawableResId = drawableResId;<br /> }<br /><br /> public String getContactName() {<br /> return contactName;<br /> }<br /><br /> public void setContactName(String contactName) {<br /> this.contactName = contactName;<br /> }<br />}</span><br />
<h2 style="text-align: left;">
<span style="color: red;"><u>GlobalSingleTon.java</u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;">package com.example.insta;</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;">public class GlobalSingleTon {</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /> private static int position = -1;</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> private GlobalSingleTon globalSingleton = null;</span></span><br />
<span style="color: #073763;"><span style="font-weight: normal;"><br /></span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> private GlobalSingleTon() {}</span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> public static synchronized GlobalSingleTon getInstance() { </span></span><br />
<br />
<span style="color: #073763;"><span style="font-weight: normal;"> if(globalSingleton == null) { </span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> globalSingleton = new GlobalSingleTon();</span></span><br />
<span style="color: #073763;"><span style="font-weight: normal;"> }</span></span><br />
<span style="color: #073763;"><span style="font-weight: normal;"> return globalSingleton;</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> }</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /> public static int getPosition() {</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> return position;</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> }</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /> public static void setPosition(int position) {</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> GlobalSingleTon.position = position;</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"> } </span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;">}</span></span></div>
<h2 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;">MainActivity.java</span></u></span></h2>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br />package com.example.insta;<br /><br />import com.mobsandgeeks.adapters.InstantAdapter;<br />import com.mobsandgeeks.adapters.ViewHandler;<br /><br />import android.app.Activity;<br />import android.content.DialogInterface.OnClickListener;<br />import android.graphics.Color;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.widget.ImageView;<br />import android.widget.ListAdapter;<br />import android.widget.ListView;<br />import android.widget.RelativeLayout;<br />import android.widget.TextView;<br /><br />import java.util.ArrayList;<br />import java.util.List;<br /><br />public class MainActivity extends Activity implements ViewHandler<Contact> {<br /><br /> private ListView mContactListView;<br /><br /> private List<Contact> mContactList;<br /><br /> private InstantAdapter<Contact> mAdapter;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mContactListView = (ListView)findViewById(R.id.demo_list);<br /> mContactList = new ArrayList<Contact>();<br /> mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));<br /> mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));<br /> mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));<br /> mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));<br /> mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));<br /><br /> mAdapter = new InstantAdapter<Contact>(this, R.layout.list_item, Contact.class,<br /> mContactList);<br /> mAdapter.setViewHandler(R.id.imageView1, this);<br /> mAdapter.setViewHandler(R.id.textView1, this);<br /> mAdapter.setViewHandler(R.id.par_relative, this);<br /><br /> mContactListView.setAdapter(mAdapter);<br /> }<br /><br /> @Override<br /> public void handleView(ListAdapter adapter, View parent, final View view, Contact contact,<br /> int position) {<br /> switch (view.getId()) {<br /> case R.id.imageView1:<br /> ((ImageView)view).setBackgroundResource(contact.getDrawableResId());<br /> break;<br /> case R.id.textView1:<br /> ((TextView)view).setText(contact.getContactName());<br /> break;<br /> case R.id.par_relative:<br /> final int pos = position;<br /> ((RelativeLayout)view).setOnClickListener(new View.OnClickListener() {<br /><br /> @Override<br /> public void onClick(View v) {<br /> GlobalSingleTon.setPosition(pos);<br /> mAdapter.notifyDataSetChanged();<br /> <br /> }<br /> });<br /> }<br /> <br /> if(position == GlobalSingleTon.getPosition()) {<br /> view.setBackgroundColor(Color.GREEN);<br /> } else {<br /> view.setBackgroundColor(Color.WHITE);<br /> }<br /> }<br />}</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /></span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /></span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;">output :</span></span></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUoxhTB63CkP8r4MD_bcSH6Ww5cP5k7BZxSzhNoz-R57ZtyMxD6KGVra-TOqi3idGVJtEemHKvgfNFQ0FYRS4kCs1KNHaa4VFdRpuuYAX6ZCeHxsz_1w4PQGsUUHcy9fntLjFVLECAQS8/s1600/Screenshot_2014-02-21-16-34-00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUoxhTB63CkP8r4MD_bcSH6Ww5cP5k7BZxSzhNoz-R57ZtyMxD6KGVra-TOqi3idGVJtEemHKvgfNFQ0FYRS4kCs1KNHaa4VFdRpuuYAX6ZCeHxsz_1w4PQGsUUHcy9fntLjFVLECAQS8/s1600/Screenshot_2014-02-21-16-34-00.png" height="400" width="240" /></a></div>
<div style="text-align: left;">
<span style="color: #073763;"><span style="font-weight: normal;"><br /></span></span></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<br /></div>
Source Code : Coming Soon..<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-27545528322850591442013-12-24T21:01:00.000+05:302013-12-24T21:01:11.224+05:30Bar Code Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u>Step 1 :</u></span></span> </h3>
<h3 style="text-align: left;">
<span style="font-weight: normal;">Download <a href="http://code.google.com/p/android-zxinglib/source/checkout">Zxing Library </a>for barcode and Add it to your project.</span></h3>
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Step 2 : activity_main.xml</span></u></span></h3>
<span style="color: #0b5394;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent" ><br /><br /> <Button<br /> android:id="@+id/scan_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentTop="true"<br /> android:layout_centerHorizontal="true"<br /> android:layout_marginTop="54dp"<br /> android:text="Button" /><br /><br /> <TextView<br /> android:id="@+id/textView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_centerVertical="true"<br /> android:layout_marginLeft="42dp"<br /> android:text="Large Text"<br /> android:textAppearance="?android:attr/textAppearanceLarge" /><br /><br /></RelativeLayout></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Step 3 : MainActivity.java</span></u></span></h3>
<span style="color: #0b5394;">package com.rajeshvijayakumar.barcode;<br /><br />public class MainActivity extends Activity implements OnClickListener {<br /><br /> private ZXingLibConfig zxingLibConfig;<br /> private Button mScanBarCodeButton;<br /> private TextView mSummaryView;<br /> private String result;<br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mScanBarCodeButton = (Button) findViewById(R.id.scan_button);<br /> mSummaryView = (TextView) findViewById(R.id.textView1);<br /> mScanBarCodeButton.setOnClickListener(this);<br /> }<br /><br /> @Override<br /> public void onClick(View view) {<br /><br /> switch (view.getId()) {<br /> case R.id.scan_button:<br /> IntentIntegrator.initiateScan(MainActivity.this, zxingLibConfig);<br /> break;<br /> }<br /> }<br /><br /> @Override<br /> protected void onActivityResult(int requestCode, int resultCode, Intent data) {<br /> super.onActivityResult(requestCode, resultCode, data);<br /> switch (requestCode) {<br /> case IntentIntegrator.REQUEST_CODE:<br /> IntentResult scanResult = IntentIntegrator.parseActivityResult(<br /> requestCode, resultCode, data);<br /> if (scanResult != null) {<br /> result = scanResult.getContents();// scanned result<br /> mSummaryView.setText("Scanned Barcode : "+ result);<br /> } else {<br /> // DO Something<br /> }<br /> break;<br /> default:<br /> }<br /> }<br />}</span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;"> Step 4: Manifest.xml</span></u></span></h3>
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="com.rajeshvijayakumar.barcode"<br /> android:versionCode="1"<br /> android:versionName="1.0" ><br /><br /> <uses-sdk<br /> android:minSdkVersion="7"<br /> android:targetSdkVersion="19" /><br /><br /> <uses-feature android:name="android.hardware.camera" /><br /> <uses-feature android:name="android.hardware.camera.autofocus" /><br /><br /> <uses-permission android:name="android.permission.CAMERA" /><br /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><br /> <uses-permission android:name="android.permission.VIBRATE" /><br /> <uses-permission android:name="android.permission.FLASHLIGHT" /><br /><br /> <application<br /> android:allowBackup="true"<br /> android:icon="@drawable/ic_launcher"<br /> android:label="@string/app_name"<br /> android:theme="@style/AppTheme" ><br /> <activity<br /> android:name="com.rajeshvijayakumar.barcode.MainActivity"<br /> android:screenOrientation="landscape"<br /> android:label="@string/app_name" ><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /> <activity<br /> android:name="jim.h.common.android.lib.zxing.CaptureActivity"<br /> android:configChanges="orientation|keyboardHidden"<br /> android:screenOrientation="landscape"<br /> android:theme="@android:style/Theme.NoTitleBar.Fullscreen"<br /> android:windowSoftInputMode="stateAlwaysHidden" /><br /> </application><br /><br /></manifest></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Expected Output :</span></u></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5WoEP_j2O-Bj8SAnDICVjLvjf3XZ5wkkccaftji0qiq4ta-KVC4N2RYnW7K4m031oILRxgY09Wpii9nHmfCEr8Rx-oeyFeeLwExMevRpjMxUKVu_1kYcXwBosr0WddeSOiuXzf6Bgmk/s1600/Screenshot_2013-12-24-20-53-08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5WoEP_j2O-Bj8SAnDICVjLvjf3XZ5wkkccaftji0qiq4ta-KVC4N2RYnW7K4m031oILRxgY09Wpii9nHmfCEr8Rx-oeyFeeLwExMevRpjMxUKVu_1kYcXwBosr0WddeSOiuXzf6Bgmk/s1600/Screenshot_2013-12-24-20-53-08.png" height="240" width="400" /></a></div>
<br />
<br />
<br />
GitHub:<a href="https://github.com/rajeshmcashc10/rajeshvijayakumar-android/tree/master/barcode-example"> https://github.com/rajeshmcashc10/rajeshvijayakumar-android/tree/master/barcode-example</a><br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-26043361935337941362013-12-19T01:47:00.000+05:302013-12-19T01:47:43.163+05:30Simple Time Widget Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">wc_home_widget.xml</span></u></span></h3>
<span style="color: #0b5394;"><RelativeLayout android:id="@+id/widget_layout" </span><br />
<span style="color: #0b5394;"> xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:gravity="center"<br /> android:background="#08458c" ><br /><br /> <TextView<br /> android:id="@+id/widget_textView"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_alignParentTop="true"<br /> android:layout_margin="5dp"<br /> android:text="12:00 PM"<br /> android:textAppearance="?android:attr/textAppearanceLarge" /><br /><br /> <TextView<br /> android:id="@+id/day_textView"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/widget_textView"<br /> android:layout_below="@+id/widget_textView"<br /> android:layout_marginTop="16dp"<br /> android:text="Day"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <TextView<br /> android:id="@+id/date_textView"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignBaseline="@+id/day_textView"<br /> android:layout_alignBottom="@+id/day_textView"<br /> android:layout_marginLeft="15dp"<br /> android:layout_toRightOf="@+id/day_textView"<br /> android:text="currentDate"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">TimeWidget.java</span></u></span></h3>
<span style="color: #0b5394;">package com.rajeshvijayakumar.widget;<br /><br />import java.text.DateFormat;<br />import java.text.SimpleDateFormat;<br />import java.util.Date;<br />import java.util.Locale;<br />import java.util.Timer;<br />import java.util.TimerTask;<br /><br />import android.app.PendingIntent;<br />import android.appwidget.AppWidgetManager;<br />import android.appwidget.AppWidgetProvider;<br />import android.content.ComponentName;<br />import android.content.Context;<br />import android.content.Intent;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.RemoteViews;<br />import android.widget.Toast;<br /><br />public class TimeWidget extends AppWidgetProvider implements OnClickListener {<br /><br /> private Date mCurrentTime;<br /> private int mYear;<br /> private PendingIntent pendingIntent;<br /> @Override<br /> public void onUpdate(Context context, AppWidgetManager appWidgetManager,<br /> int[] appWidgetIds) {<br /> Toast.makeText(context, "onUpdate", Toast.LENGTH_SHORT).show();<br /><br /> RemoteViews remoteViews1 = new RemoteViews(context.getPackageName (), R.layout.wc_home_widget); <br />// Intent intent = new Intent(context, AddLocationActivity.class);<br />// pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);<br /> Timer timer = new Timer();<br /> timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);<br /> <br /> super.onUpdate(context, appWidgetManager, appWidgetIds);<br /> }<br /> <br /> private class MyTime extends TimerTask {<br /> <br /> RemoteViews remoteViews;<br /> AppWidgetManager appWidgetManager;<br /> ComponentName thisWidget;<br /> DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());<br /> <br /> public MyTime(Context context, AppWidgetManager appWidgetManager) {<br /> this.appWidgetManager = appWidgetManager;<br /> <br /> remoteViews = new RemoteViews(context.getPackageName(), R.layout.wc_home_widget);<br /> remoteViews.setOnClickPendingIntent(R.id.widget_layout, pendingIntent);<br /> thisWidget = new ComponentName(context, TimeWidget.class);<br /> <br /> }<br /> <br /> @Override<br /> public void run() {<br /> mCurrentTime = new Date();<br /> remoteViews.setTextViewText(R.id.widget_textView, "" + format.format(mCurrentTime));<br /> remoteViews.setTextViewText(R.id.day_textView, ""+DateTimeUtils.getDayName(mCurrentTime.getDay()));<br /> remoteViews.setTextViewText(R.id.date_textView, ""+mCurrentTime.getDate()+" "+DateTimeUtils.getMonthName(mCurrentTime.getMonth()));<br /> <br /> // MMM<br /> <br /> appWidgetManager.updateAppWidget(thisWidget, remoteViews);<br /> }<br /> }<br /> <br /> @Override<br /> public void onReceive(Context context, Intent intent) {<br /> <br /> final String action = intent.getAction();<br /> if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {<br /> final int appWidgetId = intent.getExtras().getInt(<br /> AppWidgetManager.EXTRA_APPWIDGET_ID,<br /> AppWidgetManager.INVALID_APPWIDGET_ID);<br /> if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {<br /> this.onDeleted(context, new int[] { appWidgetId });<br /> }<br /> } else {<br /> super.onReceive(context, intent);<br /> }<br /> }<br /> <br /> @Override<br /> public void onDeleted(Context context, int[] appWidgetIds) {<br /> Toast.makeText(context, "onDelete", Toast.LENGTH_SHORT).show();<br /> super.onDeleted(context, appWidgetIds);<br /> }<br /><br /> @Override<br /> public void onClick(View v) {<br /> // TODO Auto-generated method stub<br /> }</span><br />}<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">DateTimeUtils.java</span></u></span></h3>
<span style="color: #0b5394;">package com.rajeshvijayakumar.widget;<br /><br />import java.text.SimpleDateFormat;<br />import java.util.Calendar;<br />import java.util.GregorianCalendar;<br />import java.util.TimeZone;<br /><br />public class DateTimeUtils {<br /> private static Calendar cal;<br /><br /> public static void setTimeZoneForApp(String timezoneId) {<br /> cal = new GregorianCalendar(TimeZone.getTimeZone(timezoneId));<br /> }<br /><br /> public static Calendar getTimeZoneForApp() {<br /> return cal;<br /> }<br /><br /> public static String getCountryTime(String timeZoneId, boolean countryTime) {<br /><br /> Calendar cal = new GregorianCalendar(TimeZone.getTimeZone(timeZoneId));<br /> <br /> int minutes = cal.get(Calendar.MINUTE); // 0..59<br /> int seconds = cal.get(Calendar.SECOND); // 0..59<br /> String min12 = (minutes < 10) ? "0" + minutes : "" + minutes;<br /> String sec12 = (seconds < 10) ? "0" + seconds : "" + seconds;<br /> boolean am = cal.get(Calendar.AM_PM) == Calendar.AM;<br /> String amorpm = (am == true) ? "AM" : "PM";<br /> String hour = "";<br /> if (countryTime == true) {<br /> int hour12 = cal.get(Calendar.HOUR); // 0..11<br /> int hr12 = (hour12 == 0) ? 12 : hour12;<br /> hour = hr12 + ":" + min12.trim()+ " " + amorpm;<br /> } else {<br /> cal.setTimeZone(TimeZone.getTimeZone("GMT"));<br /> int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..23<br /> String hr24 = (hour24 < 0) ? "0" + hour24 : "" + hour24;<br /> hour = hr24 + ":" + min12;<br /> }<br /> return hour;<br /> }<br /><br /> public static String getCurrentDate(String format,<br /> boolean displayCurrentDate) {<br /> if (displayCurrentDate == true) {<br /> Calendar c = Calendar.getInstance();<br /> SimpleDateFormat df = new SimpleDateFormat(format);<br /> String formatted = df.format(c.getTime());<br /> return formatted;<br /> } else {<br /> return "";<br /> }<br /> }<br /><br /> public static String getCountryDate(String timeZoneId,<br /> boolean displayCountryDate) {<br /><br /> if (displayCountryDate == true) {<br /> Calendar cal = new GregorianCalendar(<br /> TimeZone.getTimeZone(timeZoneId));<br /> int date = cal.get(Calendar.DATE);<br /> int month = cal.get(Calendar.MONTH);<br /> String monthName = getMonthName(month);<br /> int year = cal.get(Calendar.YEAR);<br /> return +date + "-" + monthName + "-" + year;<br /> } else {<br /> return "";<br /> }<br /> }<br /><br /> public static String getDayName(int dayNo) {<br /> String dayName = "";<br /> switch (dayNo) {<br /> case 0:<br /> dayName = "Sun";<br /> break;<br /> case 1:<br /> dayName = "Mon";<br /> break;<br /> case 2:<br /> dayName = "Tue";<br /> break;<br /> case 3:<br /> dayName = "Wed";<br /> break;<br /> case 4:<br /> dayName = "Thu";<br /> break;<br /> case 5:<br /> dayName = "Fri";<br /> break;<br /> case 6:<br /> dayName = "Sat";<br /> break;<br /><br /> }<br /> return dayName;<br /><br /> }<br /><br /> public static String getMonthName(int month) {<br /> String monthName = "";<br /> switch (month) {<br /> case 0:<br /> monthName = "Jan";<br /> break;<br /> case 1:<br /> monthName = "Feb";<br /> break;<br /> case 2:<br /> monthName = "Mar";<br /> break;<br /> case 3:<br /> monthName = "Apr";<br /> break;<br /> case 4:<br /> monthName = "May";<br /> break;<br /> case 5:<br /> monthName = "Jun";<br /> break;<br /> case 6:<br /> monthName = "Jul";<br /> break;<br /> case 7:<br /> monthName = "Aug";<br /> break;<br /> case 8:<br /> monthName = "Sep";<br /> break;<br /> case 9:<br /> monthName = "Oct";<br /> break;<br /> case 10:<br /> monthName = "Nov";<br /> break;<br /> case 11:<br /> monthName = "Dec";<br /> break;<br /> }<br /> return monthName;<br /> }<br /><br />}</span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u>Manifest.xml file</u></span></h3>
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="com.rajeshvijayakumar.widget"<br /> android:versionCode="1"<br /> android:versionName="1.0" ><br /><br /> <uses-sdk<br /> android:minSdkVersion="8"<br /> android:targetSdkVersion="19" /><br /><br /> <application<br /> android:allowBackup="true"<br /> android:icon="@drawable/ic_launcher"<br /> android:label="@string/app_name"<br /> android:theme="@style/AppTheme" ><br /> <receiver<br /> android:name=".TimeWidget"<br /> android:label="@string/app_name" ><br /> <intent-filter><br /> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /><br /> </intent-filter><br /><br /> <meta-data<br /> android:name="android.appwidget.provider"<br /> android:resource="@xml/hello_widget_provider" /><br /> </receiver><br /> </application><br /><br /></manifest></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u>Ouput :</u></span></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaXEVjtBP8nC-FEJhieiTI7XRV_ExJc0MBu8GOtArGl0-AE721nGV6GoVrbEOoPKPzVK58ZySdUUW6gMOaUH7fyApq-phlUBhYzdmipsjkTyWlsmMzvaEJSlqYbTiTk6ujTOlmY_bJIFU/s1600/Screenshot_2013-12-19-01-18-44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaXEVjtBP8nC-FEJhieiTI7XRV_ExJc0MBu8GOtArGl0-AE721nGV6GoVrbEOoPKPzVK58ZySdUUW6gMOaUH7fyApq-phlUBhYzdmipsjkTyWlsmMzvaEJSlqYbTiTk6ujTOlmY_bJIFU/s1600/Screenshot_2013-12-19-01-18-44.png" height="320" width="192" /></a></div>
<br />
<br />
GitHub : <a href="https://github.com/rajeshmcashc10/rajeshvijayakumar-android/tree/master/widgetdemo">https://github.com/rajeshmcashc10/rajeshvijayakumar-android/tree/master/widgetdemo</a><br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-70097101402354671622013-08-11T22:15:00.000+05:302013-08-11T22:15:10.169+05:30StartActivityForResult with Dialog Activity Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: red;"><u><b><span style="font-size: large;">In activity_main.xml</span></b></u></span><br />
<br />
<span style="color: #0b5394;"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <TextView<br /> android:id="@+id/name"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_alignParentTop="true"<br /> android:layout_marginLeft="95dp"<br /> android:layout_marginTop="62dp"<br /> android:textSize="19sp"<br /> android:text="**********" /><br /><br /> <Button<br /> android:id="@+id/set"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/name"<br /> android:layout_below="@+id/name"<br /> android:layout_marginTop="24dp"<br /> android:text="Set Name" /><br /><br /></RelativeLayout></span><br />
<span style="color: red;"><u><b><span style="font-size: large;"><br /></span></b></u></span>
<span style="color: red;"><u><b><span style="font-size: large;">In dialog_box.xml</span></b></u></span><br />
<br />
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <EditText<br /> android:id="@+id/name_edit_text"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentTop="true"<br /> android:layout_centerHorizontal="true"<br /> android:layout_marginTop="40dp"<br /> android:ems="10"<br /> android:inputType="textPersonName" /><br /><br /> <Button<br /> android:id="@+id/ok"<br /> android:layout_width="150dp"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@+id/name_edit_text"<br /> android:layout_marginTop="50dp"<br /> android:layout_toLeftOf="@+id/cancel"<br /> android:text="Ok" /><br /><br /> <Button<br /> android:id="@+id/cancel"<br /> android:layout_width="150dp"<br /> android:layout_height="wrap_content"<br /> android:layout_alignBaseline="@+id/ok"<br /> android:layout_alignBottom="@+id/ok"<br /> android:layout_alignParentRight="true"<br /> android:layout_marginRight="14dp"<br /> android:text="Cancel" /><br /><br /></RelativeLayout> </span><br />
<br />
<span style="color: red;"><u><b><span style="font-size: large;">MainActivity.java</span></b></u></span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;">package com.rajeshvijayakumar.safr;<br /><br />public class MainActivity extends Activity implements OnClickListener {<br /><br /> private TextView mNameTextView;<br /> private Button mSetButton;<br /> <br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mNameTextView = (TextView) findViewById(R.id.name);<br /> mSetButton = (Button) findViewById(R.id.set);<br /> mSetButton.setOnClickListener(this);<br /> }<br /><br /> @Override<br /> public void onClick(View v) {<br /> switch (v.getId()) {<br /> case R.id.set:<br /> Intent intent = new Intent(this, NameDialogActivity.class);<br /> startActivityForResult(intent, 1);<br /> break;<br /> }<br /> }<br /><br /> @Override<br /> protected void onActivityResult(int requestCode, int resultCode, Intent data) {<br /> <br /> if(resultCode == RESULT_OK && data.getExtras().containsKey("name")) {<br /> String name = data.getExtras().getString("name");<br /> mNameTextView.setText(name);<br /> }<br /> } <br />}</span><br />
<br />
<span style="color: red;"><u><b><span style="font-size: large;">NameDialogActivity.java</span></b></u></span><br />
<br />
<span style="color: #0b5394;">package com.rajeshvijayakumar.safr;<br /><br />public class NameDialogActivity extends Activity implements OnClickListener {<br /><br /> private EditText mNameEditText;<br /> private Button mOk;<br /> private Button mCancel;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.dialog_box);<br /> mNameEditText = (EditText) findViewById(R.id.name_edit_text);<br /> mOk = (Button) findViewById(R.id.ok);<br /> mCancel = (Button) findViewById(R.id.cancel);<br /> mOk.setOnClickListener(this);<br /> mCancel.setOnClickListener(this);<br /> }<br /><br /> @Override<br /> public void onClick(View v) {<br /><br /> Intent intent = getIntent();<br /> switch (v.getId()) {<br /> case R.id.ok:<br /> String name = mNameEditText.getText().toString();<br /> intent.putExtra("name", name);<br /> setResult(RESULT_OK, intent);<br /> break;<br /> case R.id.cancel:<br /> setResult(RESULT_CANCELED, intent);<br /> break;<br /> }<br /> finish();<br /> }<br />}</span><br />
<span style="color: red;"><u><b><span style="font-size: large;"><br /></span></b></u></span>
<span style="color: red;"><u><b><span style="font-size: large;">In manifest.xml add theme as @android:style/Theme.Dialog for NameDialogActivity</span></b></u></span><br />
<br />
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="com.rajeshvijayakumar.safr"<br /> android:versionCode="1"<br /> android:versionName="1.0" ><br /><br /> <uses-sdk<br /> android:minSdkVersion="8"<br /> android:targetSdkVersion="17" /><br /><br /> <application<br /> android:allowBackup="true"<br /> android:icon="@drawable/ic_launcher"<br /> android:label="@string/app_name"<br /> android:theme="@style/AppTheme" ><br /> <activity<br /> android:name="com.rajeshvijayakumar.safr.MainActivity"<br /> android:label="@string/app_name" ><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /> <activity<br /> android:name=".NameDialogActivity"<br /> android:theme="@android:style/Theme.Dialog" /><br /> </application><br /><br /></manifest></span><br />
<span style="font-size: large;"><span style="color: red;"><u><b><br /></b></u></span></span>
<span style="font-size: large;"><span style="color: red;"><u><b>Output :</b></u></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAg6m1K4v5zrCH1hNU19jC12pESJziyVJG1KrlV72JRtxT-w7lWqoAXD-zad_b390wmoWktZvZoi0cqT5-xPL1Fk3hokdF3LH1IgjmT9eAUWvgMw7I_kPLrD3izzNKHWNYDdVb5KDrEa8/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAg6m1K4v5zrCH1hNU19jC12pESJziyVJG1KrlV72JRtxT-w7lWqoAXD-zad_b390wmoWktZvZoi0cqT5-xPL1Fk3hokdF3LH1IgjmT9eAUWvgMw7I_kPLrD3izzNKHWNYDdVb5KDrEa8/s1600/pic1.png" height="320" width="192" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZmMFN9wp8hX5cPqSlTZbbx3dXeQVeUCCRkDS-CznmEapjlAjamyI2-iaMXNXCLbm5XOjAgij9zY7g5mJqA3ZhoRHXyHTLs0VrJLAEiTe6ZwheqQ-RnwLMYRUywLPl8bg7LDQ_TKQOUNU/s1600/pic2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZmMFN9wp8hX5cPqSlTZbbx3dXeQVeUCCRkDS-CznmEapjlAjamyI2-iaMXNXCLbm5XOjAgij9zY7g5mJqA3ZhoRHXyHTLs0VrJLAEiTe6ZwheqQ-RnwLMYRUywLPl8bg7LDQ_TKQOUNU/s1600/pic2.png" height="320" width="192" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicHX35EeA9bzTZ3YzV_VoTM0z5WHcDXX8zkXHWBdNID_qnsjhRSZieqPO9HnNdJjtRRefOGxL_NYIhz1xQy8Hx5pP2G-gehT5xkhZLSD38n8YVkCdruH-o1yzb5W-OmPT-ILfpkhFucN4/s1600/pic3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicHX35EeA9bzTZ3YzV_VoTM0z5WHcDXX8zkXHWBdNID_qnsjhRSZieqPO9HnNdJjtRRefOGxL_NYIhz1xQy8Hx5pP2G-gehT5xkhZLSD38n8YVkCdruH-o1yzb5W-OmPT-ILfpkhFucN4/s1600/pic3.png" height="320" width="192" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAUACAIAAAB/M6LjAADAoElEQVR4nOydB1wUx/7AqRYEpCkqinAVuDuucfQuoIgFBUFsIEUsoHREeu9NUES6vRu7MT2amGiSZ0ksiSaamPJiet77Jy/R+P/drW4uB3ccByIJv+9n3c+6Nzs7OzvsfHdmdldNDUEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBPnHoq7+rFOADBY6Ojq2trazZs2a+wRHR8dx48apD3oh0NZ8vEdtLXWtJ8sjtdU1JIuaGmojtNRlQiIIgiB/U9SfoMKvTy9R8G/kWEN1Ta2+bqmpqTlixAhtbe0RUhD/hZ+eQlKR/uHg4FBQUNDU1LR9+/YdT2htba2oqFi9enViYmJJSUnpE5KSkkJDQ6lU6tM4l9zJOtULzcNcx3EsxmyJozXFUy0njoqYbtqWTM8Lt9AdpVETS2lZR/O3M+RNHVMVYj6PZ4iajiAI8jdCsdNoPEGFbQcoeeJda4/Rt4jM1tDRUyL8YyDNMJ8yZYqLi4uTk5OzFPBfWGlubk4GexZWh/wVcNL58+e3tbWB8ezsiR1yAFWqqanx9fU1NDSUV1JVwI89timKkhkyJdDFpCOV0ZnGcLPVL4mx7Mxgdq5n0s1Gt6cw2pPpq2dODLQzql88NcZtnMbfoQgRJf5ZpwJBEOQZI30lhOWRI0dCJTJhwoSpU6fS6XQrKyv2E2AZ1lhYWEycOBHCQEiZbZ9SAtXEV2xNSlQms+yghtaIvm4PB+Lh4eHZE3AsWBEMIYKDgzs7O3tUH2Xo6uoqLi728fEZPXr0gKTHn2vQsopWGWUZ4Wfalc7clsGc5WS0OZG+bYN4eZrQsCONEbLEddy0OYaecyb5BRp7B2o6z9V0na/pFarpu0RzRoRmQJR48l+u6btU02uhpluQpkugptMcDaboGfbpTpo0KSAgQE+v95sJBEGQfx7SFb+2tjYIDYgCh8NxdHR0c3OTZwwE8CuEgZAQHhwCtoUYeoy5/6lU09DUVFebGryaWXaAlrdDY8TIXo9LV1dXT4K+vr6Ojg6DwSDSLHMIMGcymRAAghHhYUP0oWeGg4NDR0eHyvZDNhG1t7enpqaampr2P0kzBYZta+nN62hr55t1rWdu38CM8J8A9gMLMA/3E/eF2c31U/cMU/NapOa1WM17idq0pWo+4WrTI9VmxqgFxKrNWqk2K1a8PCNKzS9CzWeZOIz3Yk2Xec9EgKB8Gxsb19TUbNu2LS8vT0urzz3KCIIgf1+k63io8sF7BAIBCE13y5GHTEjYFmIAE4LYetxLf9IKs8nTQ62K9zHLD9MLdmmMGKV4C1Axe3t76d4ud3d3eSYHP0mHhA1HjOhzCxMyAICHFhQU9NN+pDVow4YN48aN62eqAuyM2hMZnWnMypWUbRli7ymLtdwmsZ+u9Yyi8KkVIZNnTLNT91z4VwFaJnYdv+ViDYIJFvwi1Kct0bLz07R20LDkqE9mqOsbD0i+dYfs/ZWBXJ+SkkL0MDY2NuIgOARBhg+klxgYGDCZTKj1SaHpUW6k20t6XC/9E8RmZWUFMcvsS+W0wmyCk59V8R5G2SFm+SF64e5eBQgMxsXFRZ7xKMbV1XXkyF5amJ4S2gYmWvpGzzA2jREjR5hMGqgE9BlbW9umpqaBEiDSgcaPH9+fVM0UGLbG0TuSGJ0pjE7JGCDxlMroSKa3JtAaoyyyvMZFulpqkAI0DQRombgFyFciQH6Rkmn5n5NvhMa0pRruCzRsnFVoAfL39/fx8RkzZoz0SnLwGrEAJdjIyMjMzAzuSCgUCpVKNTc3NzExIXqs9fX1q6uriSwC38cGTwRBhhVw/QT1IZt8FHgPAYSE6ql7E5E8E4KQEL/MVbrPaIhHspqw7a0Kd4vtp+yg8i1ATk5OCtqrekw5AQhcP1uARoybZOwdNCW2gJrZqq7R+2BcCMwo3c/ff1N44nOYePtvMEr2GbrPUa17RIXYtPQMJkdns7eeEx77FDYRHL3Lbn3DIqlulDmTGH01SAQEBGzbtm0ABYhwoNTU1P4UxBm2hs3R1NbVtNZ4WutaWus68dQST9u6mrolltIQYZHpOT7FwWSMx/wnAiRp/gEBIuxneqS458s/Wm3mCnF3GDnNjNX0XdbXc2xsbNzR0dHZ2ZmdnU2OYiZHfMNtB4h/TExMfn4+KE5dXd3GjRsbJNTX19fU1BQUFKxYsSI2NrarqwsyB3JGusEWQRDknw1cLSdNmuTo6EjW/cq0iwiFwqlTp8JcmcBknLAXuAtV8Ykc4rEvXX1mVhuz4jmmuPnnsJICBAYDHtM9YV5eXt5/BdbIhIEaRIUWID2u86RladScDnbLOcGRO4JjnwmPf8bddUVdYfeCupaWZWojCIfw+D3CVx5Px+8Jjn5qkVCrjD/1M7YxdC5761khJPiE9Fb3YCvegZvjAsIHb5jK3Llz5T351R/AGGbMmKFyR4+f9djGxZZNkZQtKyjNsZQtkqlpBWVTlGVjhEX9kqmF/hOThEZ0Fy91ECDvxY8HABHNPzOi1fxXiMcAzVmtFhinNm+t2vy1avPWqQfGa/hHa/Cn9TVz4SjAbIin3ubNmzdq1Cj469LT0+NwOImJiW1tbWCQ0o/FSSP9xByRM0uXLsX+LwRBhg9wqSQERUn18ZSMkrGysjI3N2cymQoG0/SoQTC3tbXtcyu7JLzWGD2tMfqM4v2E+hAOpLIAQUqcnJwcHBwc/4pMPqgmQLT87YJjn0rM40+N4O6+qliAzOPKBJJGF/6BDy2T6k0DV4wPXGGRvJF/8CNCXKasyFNT2oFUiG2EySRO+1uEMHE6L0yOzB4/e/mkpWlWNccfW9SRu0bewYPkQE9JgICSkhITExPVUuXPMKybZ9EQZrFpmeWmCPHUGGHZEG6xccnUurCpNQvMy+dMThEZe9jzJAK05E8Bmh4lbvWZs0bsPcFJaiEp6kEJml4hWnY+GgyB+hSGuu7YviYG/pDgloJoJ2tpaYEc8/X1TU9Pb21tlVYcBVkhHWDjxo3BwcEGBgbYC4YgyHDA1dW1T/bj+aT5x8LCQvlGIGkHcnNz69sFVlJJG/BcTP0WqmloPraffgiQl5cXeJufn19ubm5VVVWFFOXl5UFBQZBCsilINQGaHJXDKNlHL9xFy+2iZLYQ9qBYgPTYDvzDtyXB3te1EalraIobvdQ11OGW3taFt+eauDfquU/GWAmU8Q/VYqOsbxYe/wx+st54WtvIVJzz8Kt4K02ziA3ET7bb3tFU4sVLA8DTEyAwhunTp6uWqlk04+rp5rWB5vUhU+sXTq0PE0+1oeagPlXzp1TMnVw+2yzHY/wigfkTAVqm5ivp/5oRI274CUpQC01VW7RBbWmWWniOeFoGU7bakizNOauIds4+oa2tvWzZMuK42tvbOzo6urq6evWeHgFngm1zcnJMTU0H8M1JCIIgQxO4E+6xe0geoA5MJpMUIAaDoXwjEOETfXoQh+im0ZlkaV1xePy8lfB/ZsUACBAkY/HixVevXr13797du3c//fTTO3fufPnllydPnpw5c6a0DqomQKAOIA1PJg1xP1RvAmSRWEt40sRFibKdU3Cfvyyd8I+payuVaQRSIbbR5kz+oVviFqNDt3XotrKapaFhVXWUiHP83GgVauo+4+jo2NraqpriQF1eVlYGZx1kdvPmzd0DlJaWqtbdM9PcuNx1cpXflOrZU2rmmVfPh2lK1bwplWL1mVw+ywymkpmTEu2MdTyD/yJAAbFq89epLUwTq8/yPLXoIrUVJWqxpeIJFqKLNEJTVMhWuJnw9vYmXpXUV+8h+sVk8g1Wrl+/Hq4L6EAIgvzjmTBhQq+v+SEhm38I+jQSCFRp4sSJfWj+kVQHI43G01IabBpfHj8nekAECOoLJyenlJSUa9euXb9+/ZqEmzdvvvvuuxERERASAvRXgP6KMgLEbn1DeOKe4MidHh+8GjHBnH/kE4iEtfWsuDnnCdoGJqMm00ZNoWkb/EUrVYhtQmg8YUW0vG3SuyAxDYyRjA36nJrV1qfRSCoCplxRUaGaAK1Zs4Z4pfeoUaNiY2N7rPspFIoKfT3+ZkalQrMyt8kVvpMr/CdXzBJP5TAFmBH2Uz7brHyOWZbHOLqr9xMBihAPf56zRtz2syxLLapALD1rqtRXlmrMX60+Y6mGxzwNkY/6JGpfB5lD+qFw+/v7t7W1qZBLoDvdX7NEWNHatWsh67AvDEGQfzDEJQ5UxlOJjjDwJAaDISNAsEbx42BkzJaWln34uIQk2Ag9A8s1JYySAzYNL46fGyMRoOf63wIE/62urr5z5w4IEKjPjRs3bt++XV5eLt35NZgCpG04DmQFwoC4yAvDbj9POI2WngG5ckpsgWSQ9afmq0vIthzVYrNM3/y40SgssceWCB0qhxhUxGp+vUdDGmCgoIDH9LVS7+rqmj9/Pvn+SkNDw5KSkh5DBgYGqiJAk4xK+GZlzmZlnmZlvmZlM8zK/M3KZj5RH7H9TCoPnFQ8Z8I0N96fg6BnRImH/izZILafVWVgP2oxxWqLMjWWZGnEFGosTtOYu0Kd49qn0VXE3xIU5ebmZumGH1ju9ek58J6FCxdyOJyCgoLujUYgQBDDrFmzsBEIQZB/PHChYzKZvToQj8ebMmUKSI/5E2AZ1sD6Xu3HysqqD30OxPO82iMnR2Qwyw4zivbabHp5oATIU9IItHfv3o8//viGBDCho0ePwo008dPgC5Auy4FwC6vaE/Lcwqr+FCEoY6T6p8xXFhHNNuZrSkkBUi02euEuYo2Jb2iPFbG6ljbhVdydlxWP5h4wEhMT+2Q/UK8vWLCAfG/BqFGj1q1bJ69XaO3atSpU8P4TjEpszcoczMo8zMp8zMqmS+wn4IkAzZ1UPm9SxYJJ5WETo/0p4mFAhAD5x6gtSFKLyBW3/UQWqAUmqPlEqXlHGrsvFPosnGPnyZwdpbVofZ+6wMB+4C+wvb1d5gBbWlrgTw7MT8Gx19bWEo5oY2Mj0wtGABvW1dWNHz8eG4EQBPnHo6WlBTeE8hyIeCkOm80GT7KytobJWjKHCdYQj5LJ2xDmEKAPb9h/csmdFLqOWXaAUXpA3AI0cALk7u4eEBBw9uzZW7duXb9+/aOPPrp48eLSpUtFIhHoDvHdj0EWIAMHP0JZGGUH5CpL9TFCUPR5booFyMDel3jujFF+UF6SmJXPEbGNFXg8FqCi3Y8FyGeBvJYI3gHxE2T8gx8NkgDJa7zpka6uLrAfHR0dYluwnyVLlvRYuxNUVFT0TYDU1SbamQQ4Ty5hmZXZmZW5mJV5iRuByv0lAjRboj7BkyrCJlUsm1QZNSl/ycTR3gvEvWAgQAGxYgEKTlabucrILVho57mAw0mzMiuiGhdSjPMnG4XwHDX9I5QXIOLzLhkZGcSoHenjqqmpIV7nA3+i8g5/8+bNcEcyevToefPm9ShJsBJs0s/PDx+MRxDknw1xmwc1vUAgkHYgYsHb23uaj4+7h4ednQjuGKmWllOnTDafPBnmsAxrYD38CmGI5hOZzSFOqIzIvfSeGIkBGDv4WZUfBvVhSuYDJUDECOiIiIjLly9/KOHu3bvbtm1bvnz52rVrU1NTCwsLw8PDyb6wwREgQ9dZAsnwGlAWeQJEKouB0/Q/BUVDQ11TCybpkdGqxUbZ8PhptQkL4uRVxI8F6PDHgyFAoMxlZWU91t/Nzc3BwcFBQUHkq6LBfqZPn062/cC2s2bNUjwyprKysk8CNGKUtm2opdMyiv9SyqxlFFf/iQ4+po6+pk7TTV0DJnoETvIKnuwdMsU7zNxz0VT3xRbOYRZjp89Q9wzTcAsxtJtpbePsR7FaOWX8hqlj8xmGpWzDKr5RjdC4WmBcaWsUyZigNaoPn2uFvyV7e3vicXeZ42ppaXF1dR07dmxcXJy8FiBY39jYCAqoIIsgTExMzLN6DzqCIMigQdgJ3Do6ODhIqc808ACBUGg+ZbLe6FEjNNW1tLU1Ro3R1DMYYTge5rAMa2A9/DplshmElLxdcBoZg6OjI/GF6b4N/VFTM/EItGl4kVGyf2AFCBQNDjAvL+/jjz/+4IMPQIPOnz//zjvvXLp06erVq7Dy1VdfDQ0N/dsI0MDFZhaeQTQmUTNb5I1x5h+8NXgCBJSWlvZYNyckJOjo6IC+wHnasmUL0fNFfn0Xipqtre2mTZsU2I8KAgQYThkzlWdo7TKO5z2e6z3eY+EUv4ipASsos1dTZ6+hBaymzVhF842lesVQ3SKpDssoLC8rz3FTw3QNY3V043X1koz1Mibp51LGFrMMq+yM6l2NGz3F00ZX46hpdlr+4cq3AEGhBDuR5zfkqw4V54BiIIaUlBT8PjyCIMMBwlGMjIzgBtJLAp8vGGdsDBdlLd2x+mxH0xmLp4avp6Ztpme207M6YA7LsMZ0xhJ9jjOEgZDjjI1gK2JziMfY2FitD20/4uv/OPc5o43GGzhOZ21+RVaAoOZWTYBcXDxBaCR25uLqGrtyZUFhUVz82uAFC9bExb3//vsf3bp16/btf126HBUdDYEhGBEeAvf/Y6iDL0BKdYFJwohjk6DHcSLW8A98OGoKvfsDSZMWJRKG9OwFKD8/n/i8nJaWFoj23LlzyZ4vTU1NkFawn16rfxUEiOI4ziFwiudii5krKPPiacEJdJiC1tHnr6MHrqXPiaMFrBE7kM8Kmmc01WU51Xn25OUjdeJGjUnQ0UvS1Usz1M+cMDbP0qCUbVjjYNToZdw03WTLDJMmP+MVM4Xa3guVHwRtaGhYXFysoIOv/0Dkubm5sKM+ZRGCIMjfmgkTJjg5OU0xM9NSVx9pbDreN5SaXG9Vsn9yZI5p0JoJC+JNg+OISbwctHry8mxmyT5aykbT6YtGGk+ArcwmTYQY+vbQu6Qy0rW0tio/pGU4zsBxBmvzywPTAqSt7Wxv5+nqTExebi6ujvZOIqGbk4ODUFBZUXH71q3r1659dON6UV4O/OTt7koGdnEQjfwbCpAqsamrk2/6sa47OXKSJRlYXUtrQsha/qHbjw1p0AQoKSmpx7q5q6srMjKS0BeYk+PLYMHPz6/HF/90Jy0trU8CNHLMSN4iS9coqm8sFUQHdGduvHiaHUebtYY2U9z8Q/eJpXvF0N2j6M7LGaJwJn8xM1RPYj86+qm6+ukGYzPHG+RPNSi1EQvQJh/jrbNMWuaYwDzecVwfRsmpqZmamsJhPqUXRRKAAOXl5aEAIQgy3NAdM0ZLR8/EeSY9o8W6+rhV1TGwDfPYIiPP+cbewcbeQU+mYCOPeeYrCkFHoPq0rjnByGw1cZ2lrTsWYlDefoi2n9HjzWjpTdYNL2jrGw+gAGmPGm0fEuUaHu8a8Xhyi1jrEZngEh4/fWXK8+fe+ujTe7c/+7zj5Cse0Qmu4XHwKxnSYWH0iNE6/czMv4cAqamNsbbj7btOfCiDu+cDWnaHxboqanY7p+NtiJC39zpxIIMnQKGhofKqZ6j7p02bRnZ7qUl6hby8vNrb25Ws4OPj4/s0wldDU8Nipjl3CcVpOcUzhuoTCyZE84ulwXyauMmH5h5Fc1lOdwhnCJcxuYutbMJsGKEcLwvjBLCfMWPT9cZmjDXIMjHIm2xYwjSqFopbgLbONmkNNGmda7LOyUizL61R5ubmra2tSgpQVVWVCqq0bdu29PR0fX39PiQLQRDk746kRhznPMOq9CCz8qj4u+ulB5jlhxhFe0znrzaetsDEd6GJbyjMYdl03kpG4W74VRymTBzeuvyQqdtssf30ZdyPtp4BNbEGIrGpP6NtYDKQAqRnwC/Z6dB4yqHhpHgumRw3neLVHY85cP7yFz/c/vbn529+PqPlBbuNJ2D94zCSwIKyPSPGGvUzO3t/CszJ//FTYMooi72v4oxVPTZ1dX2BB0fyiiBCgx5PJz7n7b1m5DEX1IfoIxskAaJSqQpq6K1bt7q7uxMSY2xsHBER0f21foq1wNTUtE/p0RylNWbCGBOGgYXDeI7/ZNfl4rE+MHeOoDqEU+2WUvmLaZwwunUokx5ibRnMmjyfy+ZOjRmtm647dr2uQYa+QZaxYe5EwyKaUSXXaKObcfNMk7Z54mmdS98EiMFgdHZ2Kqk1KtgPbEI8VSetmAiCIP98nhjJ1OUbxE5DfHod5mUHp8ZXGfuEmviFmfgtgrnxtJCpcZUS9XkSpvzQ1KjsEfqENCghQMSHTkeMpERli2MAAWp4QXvsQAtQ8Q6HhhMOG4+L55LJseGEsP5Yw7lrd777+cLd++F7zwnqjzk1niQDEIEFpbsGQYD0uC6EsjCrjsp9DL72BOEiutZ2igWoX7Gpq2vq6JnOj6Xlb2c1vcJuO2+98fTUuLLR5gxNXX3iQGx3XBokAQK5qaurU1BPNzY2enp6stns9PR0qLD7VMe3tbW5uroq30qpoaU5drrl+DkUi/mW1qEU3mKKcAnFbql4zl9M4YZRWKEUqxAqPZhGCWJMnW81eR5rYiB3qhcraOTotDFiAdqgb5BpZJhralhoYVTOMqp1MG7yM26dq4oAmZubt7S0PL0usG3btjU1NdnY2OBj8AiCDDuIB+ONxlPXVjHLwEtAgw5a1ZywqjgyIWiVkftcI8/5Ru5zJsyLtSo/DOslrUQHmeXPURNqRplMEKuPUjWLOJiWtvbUBWsex1B6cBAECOzHrv64X8uZV29/eeubHzNOvSusP+7YeOJP+xlcARplRiGUxWbzy/KUhbXlNXHDzPF7I8ZPVry7AYhNXfpbZpqS4Vnq+jzXx9E2vTIYb4Im8PPzU2w2/XniKSQkRHkB0ho9QncmzXgOdWKg5dT5lvQFoEGWLMlkE2LJDLakB1Go8ymU+TSL+QzzedaT57EnzeOazhX66OjE6ehliAXIMNPAMGecYcEUo1KmUbXAuMHDuNlf0gXWRwEyNDQsLS1VchC0zANxvfYSEt8US0pKGjFiBL4IEUGQ4Yjk0jdmMpWe0cysOm5ddYyaVDd+ehis0dAeqa6lpaE9YowZZbzvQmpirXXlUQhDz2zRNWeo9aHzS/KldwsGs2Q/Q+xPoDWDIUBOjSdta4/GH3n7429/an7rpmPDyb+oz6ALEGSE7Y5/Eb1LmqN6GHKkOVqXd+BDycfY3xO/9acXBja2x0xakkI8BUZZ3zwY3wIjIB53ekpNHX0SIGAkxViXZ2rsNMnUw2yy3xTKfEtakGSSLEjs57EATZ1vPWU+22web8I8kf2UcaEjRqWDAOkZZo41zDY2zJ9kVEI1quQY1zkab54mHgq91rlvAjRy5MjIyMin8RQYYT8pKSmQ82g/CIIMX4hbfxsRLXnjeK+gETp6WiNH6TN4etZ2ulQWzPWZfK1Ro7V1dMd5BNJTGsayHMTqo1TtqE5Uorr6BmBRIE/iFqBBESDHhhP2EsXZf+XOCx9+4dtyxq57889gC5AaPW870Sdl3NOXKIz9wohxzbTcnr9U+lRjAzRGjGRteZUYGzRu+uI+fbSqX2hoaPj6+io/tLlP9FWAtC2Mdflmho6TTT2nTJ4x1XK+JTgQldSgIAo1iEoJolkGMS2CrM2DOJODeBODRCw+dYaW9prReo8FyMgwb4Jh0VSjMiujKoH4JUBNvsbx9n0TIE1NTR6P19zc3Otnv/oExEbYz7hx4/BDYAiCDG/UieacUfpGI3X1TVwDqOlNVuWHLJMbjH1CLZI2WpUfpK3fYuI+a6T+2FEGRk/afpSoUyRX1/HTgo2cZmjqGVrXnR5MARJtPO7RdLrx3I2Ivef4dUcdG595C5CasXcQISWsLa9pG5hI/6RlYGzT9AohH0YegdLyIe9r8KrFpgDzuHKi+Yfdfl69L89rDwCjR49OTU0d8EYgiDAoKKgPXWCjRur4cYxmsUznWpkF0s3nUS3nUyhBltSgJwIUTKEFU2kL6LQQJiWEZRFia76Ab7bA3tKH56c9YsGIUet1DTL1DbMMDXPHGeabGZZQjSrYRjUi4wZ34zWCvgkQJBscKC4ujugBVHyYxAfelWHr1q0Qp76+PtoPgiCIGElHlTHf1arskFXlMTAPev6OyZFZ9LztTMka6/JDJnaeyvd8Ea0OY62FrNqTBs4BWvpG1vWDJ0DEZA8mJPEex+7q8ywECLKOUbJP0mxzz6bxRWOfEG3jidrGE4y8g60bzhDNOZAbMj1WPX4NXuXYAGNf8Np642nBo82ZmqN1tY1Njdzn0ov3EDoFB2LoOmvwmn9ITE1NN2zYMLAOBJW9SCTqyyBoLV0fjvFszoRAm8nzraYGMSjBNKrYeCj0BRRGCIUZSmUupDPDmIwwK1oYm7KQa7FQMCXUYVKQyzSd0bO1R6bqGmbqGWaNNcwwNso1NSwwNyyhG5dyjGvtjVfZ9k2A1CQOpKent3Llyo6Ojh09QdpPe3t7WVkZZGB2dnZeXl5RUVFlZWVDQ8OmTZsaJdTW1sKvkZGRQqFQW1sbe74QBEEeI7keao4abRa0klny5IGvx0N2DsGC2YLVWqN0lBQgwn70KTbM7A6bptcMnGY+EwHqfRpkAVJTGznRkrX5JUnbzD0QDsHRT8WT2DzuEUOPR5pRZDbp8WOoKscGTE2oAZ0Shz/26Z+bSISJf+j2+NnLB2/4swzjx49fv379AAoQOEFfX3KjOWaUzhQjfStTE/vJk6dZ0kKtGAsZVovo1ovpNksYrGUwMW2WWVsvtWEu4dAX8yiL7czDHCeFuvmZT1yko7eaGAakb7hEf2y2sbgjLNvcKN7CoMLWeIWVYV8FSE3SP6ijo+Pt7Q02012Atm3bBscYGhpKp9NNTEzGjh1rYGBgaGhobGwMmTlhwoSJTwC/hF9HjRqlpaWF9oMgCPIXnjjQ1IhMQnpIB5oamaOlM4YM01s0knE/E8wZ67cwSg+A4jyrFqAhKEDipBqNnxpfzttzjXjnMjHx9l63WFelbTKhew4rECAVYgMmLlzH6bjw+D1ATyb+oVu0/B26NqLBG/vcI4QD9ellP/Lo6urq0zPwapLH4PW8hONmCyfN45svsKUu4jCWsK2XsdjLbWwjrblR1rwYa260jW00ixPFtlnOZYYLaMtEU5c4T1rk6WvHDtcdGzFm7AZdQ3Ag/zF6mQbi0dAJ4w0iJuiX0I2iKKoIkJqkHQgYPXq0QCCYP39+TEzM8uXLAwMD4b/jxo3T1NQkAmh0Q/2vECFVSQGCIMg/HuLBeEMTSlw5s4z4TvtzlLWVo4xNyV97QVJ9jtQ3oK6rhm0ZxftYTa8OhgDpjuUXbQehsa8/JtYa5SYisKBk5wj9/n4MgPhgu7LvztHQ0BylM9bed1xA+LhZ4QYOfpqjx8g1j56+Bq96bGqSB+A1NXUsrA2cZxKbGLoEaOkaiBt+hkL9OGbMGD8/v6Kiov48AAXbhoWF9bW+19DS0pnmZjzHZWKQo/lCEW2JwCqcx4rk2sZweLFswUq2cBVLsIrNX8nhxtqyY/jWUXb05Q4Wy1wnLfF2dhMu0NEP0dEXC5Cuof3oMRmSvrAYg7ELjPQKzA0jphiq7JbEgRBaAx7TXXFUjRhBEAR5AvFgvJklPX0ziAg9Y4vuFJrSQ38kV2ktLYvoXGbpQbAfeuEem8YXiS4wq5rjsAZEB+bWdafEAuQw3abhDISBlfTCvdYbz4yfHQXVM6P0gDjYk4mWt11jRC9fa9fWMxCW7e5D24/UZFexr/8tQKqgrv7n9AxiUx/gBAwgUMcbGxtPnz69trZWtbafxYsXkx9P7RMaI0aMNBg7ylB/tJG+jpGejrHuGGNdXRPxpPdkIv5LmWgYP3Hc2omm1PHGcaYT0scazx6tO0tHlxAgyoiRGZKmoCW6+jN1dXPGGy4zNcBRxwiCIEMa4sF4KwEtoXos8RJhZbpFJPWo1hh9y5jcx0OIxO06+/vVAvRk6rUFSEtXn52+kV/Qyctv5+V3KD21wyac9Zu09Q0GJuuQAURdXV1bW5tGoy1atCgtLa1SivT09LVr11ZXV7e1tZHes2PHjpaWlrKyMjc3t0F4xElHQ2ONrsHyMWNhYfUYg/W6hvwRI3nitwEZxusZwsooXfFKj5E6nBEj1xsaeYzRGWKeiSAIgnRDYjPa+oZ9a1EQi8hYfZ6brq2znq0LTLocZ32Bp7bJRHWtEfp8dz1iPazke6hrj9Q2nqAv8IAwj0PyPUdOokA8elwXYvPHkbAdezUwdQ2NkYbjR5lMUGEaaTT+GQ98QRQgb4CLpqbm+PHjXV1dg54QGBhoZ2enp6c3aF1CGpKJXCDeDiFvJdoPgiDIPxx1ddmpx/U9r1RXFAOCyKDejWedIgRBEOTvjyq1ibr0F6Yef2dKEo/sSknYbiE1uodU9qns7tqk/IQgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgyD8EHoIgCIIgyDBDjYIgCIIgCDLMQAFCEARBEGTYgQKEIAiCIMiwAwUIQRAEQZBhBwoQgiAIgiDDDhQgBEEQBEGGHShACIIgCIIMO1CAEARBEAQZdqAAIQiCIAgy7EABQhAEQRBk2IEChCAIgiDIsAMFCEEQBEGQYQcKEIIgCIIgww4UIARBEARBhh0oQAiCIAiCDDtQgBAEQRAEGXagACEIgiAIMuxAAUIQBEEQZNiBAoQgCIIgyLBjqAgQlUqxd2K5+7BpdFW2Fdpbe83g0BlPIWUIgiAIgvzjGCoCRKdTYtJENfs8Xb2tQGikof4JuSz9K4VlS8+q9yrpcuMIaFQalYIgCIIgCKKQoSJAIDWOHszSnc7JFQ5sLk3iOuKVVlZ0oZDl7Mxz9+DD5OLKsxOxbWwYNJpEg6gUGp0aHC7c8vy0kBUcBhO2edZHgiAIgiDIkGeoCBBAo1PmLGbXH3ELW2VLZ1AEApvYlTO2dkScfHnN+UtJ715PfvtG/Nmrq46fi9m6e3Fc6gxHV1uwHwcXm7oD09YWC9lctB8EQRAEQZRiCAmQpDOLFpcvqDnoWlgx970PMr78KfeH3/N+eFAM07cPcu88iLz+IOjqg8DLD+Zd/M/CUzcWZdb6ZW/yLN/j7DyNSaWj/iAIgiAIohRDSoCoHFtGSvb085+G/Pu39T88LPz+j5yfHhX8+qj+90db//eo6etHWR89Cv/g0cJLfwRd+N+ccz/PfPlr/xOfzEipsuMKGTTasz4ABEEQBEH+JgwVAQL7EYpsyusWfPxt5v2HGd89yrv/KOP/HtX88ajr4aOdDx/t+u1Rx78fZd96FHvtUcTlh2EXfg0699Psl+/POH3PZ+9lr4RSkdCRQcU2IARBEARBlGBICBDYD5dv1bx9yd3/ZH75R8aXjzLuPUr+9lHxT49qf3hU8c2jwvuPCr5+lPfpo+Rbj9ZcexR96cGyC/8XcvaHwJe+mnnyrs/hm17bL7il1wu5Qjo6EIIgCIIgvTIEBIhKYVrRMssDPvlv7kd/rLr7KPWjR6s/eZQCC588SrzzKOHuoySYPnmUdOvRuhuPVl99GPPu/8Lf+jns9W/nvfBFwPFPfA/f8Npzyb31NaeYTI41i4JDoREEQRAEUcyzFyAanbp8ndvl++nvP1hx9WHU1d9Xvv9b8tUHse//EX3t0QownpuP4m4+ir/xKO4a2M+D2Hd/jXz756Vnvw15+cvAU3cCjt+ce/Ra8K53PNrPOdccES1YYcNgogMhCIIgCKKIZyxAVCrFwc163/mI9/+X+tZ/gy/+J/Lfv7/868P7H/1f04Vfwt77bfmlB1FXHsRc/n3Fpd9i3v01+sJ/lp//cenr3yx86cug5+/OPXEr8N6P537+5fOzHxa1vebScEqU2cR3dMeOMARBEARBFPGMBYhGp8akubz+1crzP0a8fD/g7W/ifnnw9cM/fvvwh7bXv5v/5o+L3vp5yVs/L3vrp/DzPy5747ulZ79Z9MpXoS/eCzr1ydxjHwU8d232lz+988cfv1+/e6b5RbeGk6KS3XYLVliLG4EQBEEQBEHk8EwFiErhChkbDwe8+tWyM/dmnf7M94VPQz759vk73515+W74S1/Me+Wr4Fe/Dnn169BXv1oI3vPSFyEvfBZ86s68E7fmHLkRcPCD6Xsu+Zz+IP7mvTN7X1xfd9S+7ph92R77+GIWzw5fioggCIIgiFyepQBRqRTfOex97809cXvW0VveR297H7vtc/zDOcduzj36kf/JT2advjtXMgWevjPv1CeBJ27PPQ7qc3PWoWv++6/47Xlv2o4Lnp1veLa/5ttwwrX+mGPdUZeyPY7pjWxPf6oKH1VFEARBEGSY8CwFiMGkRaXY77s8/cD7nvs/8Dh4zfPgNa9D17wPfjDt0HXf525MP3JzxpGb/kduzjxyY+Zz12cevuZ/8P0Z+69M3/Mvn53veG9/G+zHrfU11+aXnBpPgf04VB60L94hSm9gz1pKxV6wfx4sFisnJ+fEiRNvv/32hQsXTp06lZ6eTsUBXyrh6elZV1dXL0EkEj3r5CCy4AlCkKfNsxQgK2t6apXbtvMeOy667nrXbfe/3PZc8tgL02XPfZe99l2Ztv+Kz/4rvvuu+O6/7LsXpn/57H5v2s6LoD5enW+6t58D+3EB+9n8vMPGE/bVh4Xle4X5nbyUOuugGEumlSXl8Zfke/iGPPK3IyAg4NKlSz/++ONPUrS3t9PwFeAqsWzZsu+//57IRj8/P/zzGGosXboUTxCCPFUGT4DgD5hGo9LptCdSQmFxGHlNPu2veXScc+o877ztbZftF1x3XHDbcdF95zswee4ST14w7bzoteMCTJ7b3vLsetOj85x7+1m31lddml92anrBoeGUfe1Ru8qDwpJd/Jw226QamwWrLZk24l2AYzm5cLx9BS6ebBsOPh32d8Xa2vrdd9+FmuDnJ3z33XcgQ3l5eVgxqAbUr5CBRGZOnz4ds3GogScIQZ42gydA03wFGXkBZZvnrVnv4+TBARkCO4lY51q2y3HTGbvW1x063hRrUCfM33TuOu/Sdd6t602Y3GHqBOl5w73jnBt4T9vrri2vumx9xVnc9nPGsfGU/cYTopojdpUHBEU7eZlbuKsL2XOWMphWFJ7QOqdqzgvvxr1+K3r/e/45zU7OXvjJsL8lmZmZZGVw+vTpuXPnMhgMPp8vEAieddL+rixbtgzr16EMCBCp+z4+PniCEGTAGQwBYlrRotZ6nr215qP/Zl/7b8qZu4ENx3y8/K3pDKqrt21sute6PN/VOQ5xhbYptdzsZmHRNlH5Hvuqg461zznVHXXaeNyZnOqPOsPKqkOOFfsdS3Y65HeKspoFqTW81QWciFT2kji7RdGu/vMEtgK6+P2KyQ6nb8+//HPCOz+uPHknYOdF9+QqLpv3DK4jra2tp06dgpo7JyfnGV7I2tvbh0IyZFAmc44dO0Y0/3z44YcsFmvoJP7vi+IGhiFSYocz2AKEIE+bpy5AVBrVydNm65npR24EHP8w8NjN+Xve8d90ynllLofNpZV1zXr+Zmz9c94JZYKQ1fRpQZMdfE25LiYskYk13xgmK54Rk2cknnMNGVxDYs6wFU90jiGNY0DnGloLDXguxo6+pj7Bk4NWUCPT2EFRVjYc6tpiXvNLLjsv+O684NP6mmvNUbvkaluhMyTpaR+0LO+99x7Rl9/V1fUMx6wMkWTIcPHiRSJV27dvl5cqIuVQE+zfv3/opPxvjeIWIGVOCvJUQQFCkKfNUxcgGo3qOZ1Tusux/rhdw0mHjccdqw6K8jp4URuYXAEjt8V597veBz/wOX474NhHM567Mf3A1Zm7L/p3vT5j6xm/Tcd96g55V+3xKtvpUdTlUtDplNfukNcuKugUFW4TFe+0K9tjX7FfVHVIVH3YrvqQqGK/XUGXYH2j7eJEGotLWZFjU7FPCDttOOlY85yoaAd/TRFb4EgdfAH617/+RdTf27Zte4bVyRBJhgzvvPMOkSoFde21a9eImmDLli1DJ+V/axTXr8qcFOSpggKEIE+bwRAgdx9OfrtD2V5e+T5+2V5+0Q5eZhMnPI1uy2ekVDnWHRU0Pi/a8pJD62tO7WedO9903faW+/a3PXde9N71zrTdF312v+O786Lvzgu+28/7dL3p3XnOq+OsZ9urbltfdmk64wR+U3tUJB4BvZuf38HL2MxLKOcEr7K04VBWZNuU7hFsPO6w8YRD9WFR4Xb+6gK2wAEF6O8nQDdu3CBqgk2bNg2dlP+tWbZsmYIhJkOzqAwrcAwQgjxtBkOA3KbZ5rU5lO7hle7lg6YUbANN4SxNodry6QnFDuX7eDVHhBtP2DWeFm0+Y9/0ggNMW150bHrRUTx/wQmmxtOOjaecNp5wBJVpPOkoaUlyqD9mX/OcqOqgXfk+oSRafk4rL72Bv7bUNijWkmVLic21KdktqDtmX3fMoeqQCAKszGPzxQLU30uJtbX14sWLMzIyioqKNmzYAJcqGxub7sEYDAZbAlnH79ixw9bWllgpL/Jp06YlJibmSVi3bp2bm5uClJC7gAViDYvFWrFiBWybnp7O4XAGJxky2NnZrVq1KisrKz8/PykpCaJSkHIFqYJjIf5LCtDmzZvhoGQOWQY+nw85kJmZSaRcceWhTAbKCxYbG0sE6zEbIRmQCRAgJydnzZo1Sr7KhShaUKgUFy0yMJEqSEyvBygTpscGBtWKimKIfMjNzSXywd7evsdg5LlWcCzKhOnnnw8wZ84cKLRQdNeuXdtj0XVwcIASAkcEZSwkJKRPpQtYsmQJXDogefHx8fJyg9KXFiAlcxhBEBkGT4BKdnFLd/NKdvEKOrnrG9lLkqkcHj2+ANbbVh4U1B4R1p+wazglajxl33jaftNp8bzxtAO4DujL3tdX3vjsxaufHOt6cWn1YfvaI/Y1R+yrD9tVHrCr2C8s3SMs2sHP7+RlbeWm1fPiiznzYyQtQFnWxbv4EBgmCJnfyV+Rx+LaWfanBUggELS2tt69e/fHv/LZZ591dXXJXHra2tq+++67H374gXx+GxZ+eAJcB2UuauvXr4eKB36Sjvn7779/44034ALX4xVw06ZNxC527twJd+pw4b558ya5IYgIhGlpaXnaySAJDQ194YUXvv76a5ltL1y4ALWR9LbKpOqDDz4g/kveCkuHgRMh0zgxc+bMI0eOfPnllzJ7h8OBSlHlDFQ+GIGrq+vevXs///xz6WR88803kDOQP/IyEKoxomjJ5DwUrW3btvVYq3V2dsLeITxkL53e87vP6+rqiJRfu3ZNOkyP9Wtfi4pi+pQPzz//PHEs//73v+fOndt9R+CF9+/fJ1Jy/Pjx7u1SKpTbLVu2EMdLtD6C1ly8eFE6BkjtsWPHnJ2difBwjuDPXOaIrl69GhcXp7h0wVmA+AsLC6HYSMf/1VdfHTp0yMXFpfu2ygiQ4hyWf2YQBBEzKALkbZvf7li8kwv2U7SDl9dhu77RNjyVxhUwVufZF+20rdgvqH5OWHfMDhxo40nRxhOi+uOi+mMOW0757Du75oM7p3/7/f/+ePQHTP/36w/vfrhvx0sR9c95Vu4Xle8Tlu0RFu8SFG7n53Xwspq5KfXcuGL2/GgQIGpMFrNoh6DmOVHtc/aV+8XvSIzJAQGiqNyW7OPj8/7775NXJRmgqrh+/XpAQAAZvqOjQ/rVNTJIVydwR3v06FHpikcmZvhp48aN3S/6TU1NxCZnzpyBCgCufeRWd+7cISo88LCnnQwCuGmGBCjYVro/RZlUkQ0/PQIxSKcEBOuLL76Qt3c4a/v27es1A6G66p6BRDBiJQRLT0+XyWfpCBctWvTxxx/LSwbU7snJyd0rMyhaV65ckZchsB70BYqWzIaQn8Qm7777rjwBqq+vJ8JAZkqH6XEQdK8npcdd9AjkA+SMgnxITU2VPhw/Pz+oyIkAL774YvcI3377bSI2MEIvLy/pn5Qpt4SCyMS5detWYpMTJ06UlZXB2e8eA6x577334M4HNOWtt97qcRfffvttWlpa9zQ3NzcT4ffs2bN7925plZeOH6zI19dXZtteu8BUK2kIgpAMhgA5e7JzWhxBdMCBirZzc9tBgDhiARIyVmaLCrZxyvfxqw4Jao4I68GBjgmrDvO2nJx++p3Cj79847+/fPvwjweP/uSPBw9///G/X12788Kh19Or9rkXbLMt2iHu/8pt523Ywk2ptY0rEgsQm0tfkWNVuJ1XfVhU85x9BQhQBy8mu18C9Oabb5LXF6gIa2trs7Oz4SaPeGSG+OnSpUvW1tZE+NWrV2+VADUB8SvcqcNNNrFSunUd7gLJ2ggqQqhuc3JyysvL9+/fT9a1ECAhIUHmikbW3+BeUDHAAtzywmXx9u3br776KnHFh9tfYo+ffPLJU0oGAPUZaQ+Qkp07d8L9bmZmJtxkw/WdzLfGxkblU1VZWUn8F8yGCHP27FkyjPRtfXR09Ndff02EgbtqSDDsHc4O7J0cQA17J9pv+pqBygcLDAwkfgWgBtq1axdkIHghVH6QKnJ9UFCQTAZC0SLihzncvhNFC/JKpmjJ9EP1R4B6bGBQvqgoRoV8gAUIQCQJEixTxvLy8sjUZmVlyZxElcstKUBwKqH0QpJApCDHYFtI6pdffkmWnM2bN588eRIWIP1g0hAAjArOFOk0n376qaurq0w+kMWGUHMoM3DdgNMKm+/YsePWrVuksoDeyZxBxS1AKpc0BEFIBkeAOHmtjoU7wFS4BV3c3Dbb9I2cZSlUDp8WkyHM6+SU7eFVHuSLG4GOCmuPiE6+XfDZ/cv/E7f6PATjedSNP/744+EfD//v1x9v3Xtr2+m4/C5eficvt423oYmbUmO7ppAVGGUBArQyz7pwG6iV+AGxsr2CvHZe9AYbW6GKAhQfH09WRXChoUmQvN6aBlcu0CDyWka+OoX4FSCHlG7fvp3BYBAryZgjIiLIyyhcMZlMJhkzAFc6uDoTv8INqMxVkrzFBCAS+K+DgwNdArkLMirpgR0DmwwnJ6e7d+8Sv8JePD09iW2Jzfl8/qlTp4hd379/n2gkUyZVtCdID4Imw5BXdoifdCwIOXfuXEgeuXdbW9sDBw4Qu4AaZe3atdIpJ6soIgPhv46OjjIZSJFqASLzuXswSBh5okF5FyxYIJ2MOXPmfPTRR0QML774onTkkCQy5wsKCogDJItWQ0MDmcLc3FzpxA94C5CSRUUxEJ7cnMgH6cKgIB8gwGuvvUZs+MEHH8CJI0sXKWQgEDI1OpRbMn9AU/pUbkkBIvJn9uzZxAklmDVrFrkt0bQJYfz9/aXDgI2R2VhdXS1PrwE4BHAa6W3t7e1feuklUnzhqiJ9aAoEqHsOK1nSEASRZjAEyMmDk7PVsXC7bcE22/xO2+xWTtpGogWIHrNelNfOLtnFqzjArz4kqDksbDrun7cx+LU3Tz384zE9ChDw22+/HTu9e03G9OJOz7wOfk4bL2MzN7XOLrHMITDKkm1LX5HDLAABOmhXdVBUtkeQ18aLyrSxFagoQGTvANS13YffStcZ3QcoKH7Qqb29nfj12rVrcPmW+RUuaqWlpcSlsPtwE2kBqq2tlVcLEih+tKfXZJSVlclLRk1NDZEG8JsexytAZUY6CtwBK585BIqfAisuLiYSBhqxaNGi7nu3srIi9yJTC0pXUQoyUJlg0q+rTktLk0knpCopKYnMQOmvO6lctAa8BYikP4/Bq5wPAOgF2doH5kdsCxJGJObevXs+Pj4yu+vPnw8pQD2WHPgvWbQIR1m5cmX3w3njjTeISF555RV5AgS7joyM7J6T4ECkrLz33ntKnqC+5jAFQZCeGAwBcnBlZ29xLNjGAQHK65AIUD0nIu2xAOW2sYt3csv38SoPggDZv3dr77Xbb2VVBpdvWvOv98/+9PMPDx9Kd4E9evDgwfc/fPPGheezysPTi0I+uPHOqTcaclq42S1ciQCJEkodAyPFAhSTw8zvBLWyqzwgKt0tyG3lxWRybfkqNgmTV+ErV670WNnAveC+ffv2799fWVkpc0lSbB4hISGJEuCmvMfEBQcHk9c7uKOVDkMKENxfKnhc6GknA67dxPrDhw/Ly1+oqMi7Uun1/RegCxcuEL8+//zz8vaekJBAVmPz5s0jg5FVFNxJK8hAsgUIgoFO9Rjm3LlzRJg333yzx2TAytu3bxNhsrOzyfW7du0iVl6+fFmeWu2XAEVLev2AtwCR9EeAzp8/T2wL+dDjk3qwL7JTGPJBetewXFJSQiTsq6++gsp74cKFZDdWbm6u4nLbY3qCgoKky630T6QAffDBBz0m1d3dnWycg2LWY5gtW7YQkcDJlddAe/36dXkPLcLNA5E8mM+ZM4fMDQVjgJQpaWQOQ+Hpcb8IggyGADm6gQA55XdyYMpr52Rt5aTUcpalUnlCenS6KKeFVbSdW7YXTEVQdVB08cNdDx7+/sPP35x792BVW2Rd+9p3r7z2y6+/EK0+//nvf958+0xJQ3TZluXn3jn608/f/v77b0ders9o4mZt5a7fZJtaZ59Q4gACxBUwV+ZZ5XdyK/YLK/aLSnYJcsQCxGfzVGwBIu8j4YK4atWq7gHIVvfu12jF5kGVosddw20xeRWWeRJH+gqruPnn6SUD7mK//fZb8n5U3t6XL1++U0JFRYX0+n4KEJ/PJytIcFB5iQe5+fTTT4lgkAAyElKAZPxAhl6DQTL+/e9/E/H3ON6W4OzZs0Q8nZ2dZBiZotX9EOQVrcFvAfLw8IiKioruCeJRqf7kAwH897XXXiNiOHbsGKlTL7zwgjydUvnPR1qA5GXgvXv3iG3lvRIJHI7ISThwmUikh47Ji9/Ly4scPAeGJy1APZ6g/ucwgiAEg/EpDHsXdtZmxzyJAOW0cTKb2Sk1rGWpFFsBNSpNlLOVVbiNW7qbW76PX3nA7sLNHQ//EHd/PXj44NsfPjt9bmtR46Lm7XlXr124+K+z1ZtTc6rDnj/b8c0PXzx8+EA8GOjhg8Mv1Kc12GZu4aY32qbW2q8rsZ8bIRagVflWeZ288n0gQHYlOwXZLdzoDD6bq2ILkIuLCznqEGrc5557LiEhQSgUKrNtX18rx2azoaYJCAiYJSEyMpK8FD49AeoxGZ6envKSQQYLDw8n18+YMUNebPJq8X4KkHRLBiRSweGQXRXS39NQpoqiSLUAQbAeAyxatIhMBmRvlRyuXLlChDlw4AC5rUzROnLkyLp165T5zivZKgl5KC/x5BCi7i1APz9B+RchFhQU/CiHuLg4CBAWFkZG29XVJS8frl692j0fSKDIEXX8TxJg4fPPP+/+nJQ8ZMotmLe8Px9lBIjsopL3/GNycjI5dlsFAaJIFW/pb9TIEyDIYemSVl1drXxJQxBEmqcvQFSqyIm9oVEsQLkd7OxW9oYtrOQa9rJUKldIjUgWZG9lFXTZluzilu3lV+wXvn19GwgQOdrnt99//er+7ROvtqaVzE4tnH/qlW1ffXMHVpKDowkBSq3nZmy2TW/gpNQ4rC22nwMCJGQQAlS2V1i2164YBGgrLypddQGiSNowyKG+P0merIbq6uLFix0dHXC1UhCvkh0KcCU9ceLEhx9+SLw7hET6wXuZK7iSV9inmgyorckKoNduONVSpUCAQEPJvcvrZSAgv6j6/PPPD7gAxcfHSw8WkWcJZAZCYqQ3V61oDX4LEPmgVneI9zypkA89NkZWVFRIBwPxkndqSKDcnjx5stdyK72JMgIEESopQICCLjAFpYtsrTl06JC0AJHJljbUfpY0BEFIBqMFSCxADY557eycNnZ2CzujiZVUzQpPpfLt6eGJwuxmVn6nbdFObukecWvN2zd2SAkQMeT54X//78euw+sPv1j5y68///HXXx88eHDohXowqvWNtqkbOak1DvHFojnhlhw+PTaPkdfBLdsjLN1jV7SDn9XMW57GZ3FUFyDY0t3dHe7SyFbxn5/cpMIVByqhpKSkHmPvtekF7lMvXLgAkZAjbeXxVAVItWSkp6eTIy57TYMKqaIoFKCMjAxi799++63ive/fv5/Y0euvvy79gh8lBUhxsJSUFHlm0CMyw5khM93c3OQVrffee6/HojX4AhQSEtLY2LipJ6DwQCT9zAcSoVBIvhbos88+43K58k4NpR9/PgMiQOSI45+7CZCSpeuFF14ggp0+fbrXFqCBymEEQQZDgAT2Num1TrltYgHK2srO2MxKqLRammLJE9Eikuwym1l5HbZFO2xLdvPK9wrfvr7jj26Pvv/y63/aD2w4+mqtpO3nL/z++2+7jpUmVbHSGjip9SBATnGFwtnhllwBIzaPDgJUulsAAlS4nZ+1hbc8RWDTDwEioEmerE5MTNy1a9elS5fI4QVEXbVz587umygWIA8Pj1u3bpFPw7788stwv7t8+fKwsLCFEtasWSOvDX8ABUjlZEi3AJHvQFKefgoQnAh5HRAyDFoLUGpq6rre6PFFvUTRSkhI2L17d49FawDHAKk2CFq6H1MGIgbIB7LqTU5OViYfevyDhP1K20xbW5u8UwPl9pNPPpEptxEREcr8+QwRAXrxxReJYKdOnepVgFQoaf295CHIP5TBESBWeq1zbhsru5WduYWdvom1rkIsQHx76vJkUWYTK7dd/IBY8U5e2R4BCJBMCxAhQG37Nhx9pfZ/v/0i89Nvv/1v59HixCpW6kZOSh0IkPOaAsHsZZYCe6vYPOZjAdptV7iNv2ELLzyZb80emGsB+ZoWuHEvLi6GCxxZV5HvASJRLEAgUuSzuFlZWQwGg/pXFIziHEABUjkZ0mOAVHjmtp8CBFUdufcZM2YouNa//vrrxI4OHjyoggApDrZ48WIyGYGBgbQnb75RgLx9kUXL1dVVpmhJD5KlSL1qXOYJamkG+TH4AcmHqKgoYlg9+SGU7777Tl5XYH/+fIaIAJGvwZQumfJO0ACWNAQZ5gzCGCAKT2idUuWU28rOamFt2MJKb7QRC1CyBVdEDU+02wAC1CYWIHEv2G4QoO1yBehleQJUIhagek5yrW1qtfPqfP6spRY8EXNlPiO3nVuyS1Cyy66gi79hM29pAt+aNfCXA7gGOTk5kZX0+fPnZS52igWIfEHOgQMHerxKQr0+CAKkcjIcHBzIp8ASExMVp6GvqSJQIEB2dnbk3tPT0+XtBepFcqCx9HsKBqoFSCAQkA+jST/i3k+IokW+zBqKlvSvkBu91t+D/Bg85MP3339PRJuZmalC7cvn899//30ihj0SiJRcvnyZfDWiNNLltsfdyZRb6Z+GyBgg8pF1SE+vY4CeUklDkGHIYAgQV2CTXOGc3cLKbLbJ2MxK3Wiztoy5JNmCZ09dGi/IaLLJaWPnd3GKdohl5fy1zocPexCg1n0bjnRrAZK8DvF/u46VJFWxU+rYyTW26+u81xY6zlpiwbNjxkoEqHinEKb8Tn7GJsHSdXbWNqoIUHBwMFRCNyTMnDmzx+ssWRtJf0OKQHF1Ql7ONmzY0GPMCxYsGJAuMMUe1msyQkJC5CXj0qVLxPp9+/bJ23tVVRVxQ//aa69Jr+//e4Defffdn3p6T6A0cXFxZOLDwsLIxA9UCxBAfrbizJkzyktDUFCQykWrsLDwxyevzJGXKvItNYP2IkTV8oGkq6uLSNjdu3ddXFycnZ1JP5D5+htBf/58hkILEJgo6WfSI70UnKB+5jCCIASD8RQYm8tMKHHK2sra0GSzfpNNSp11fClzUaIF1462bJ0IlCinlZ3fySncLm4Eajsaffvu1d9//016sPMvv/63de+GI39tAYIAYD9XPngrsyowoZKVXMtOAgGq9Uko9pq5mGrDpkekWWe3cIu22xVtF+W2CdLr7cNinZjWqggQXIXJZoaioqIeLzrynjemSF2w4Ha2+7bkJ4e6v0GRInmHMvkqlH4K0NNLRl1dHbEeamJ3d/ce9/7GG28QYWSGSZEfmNy7d69qAlRRUUH8+t1330m/5FAaSDwRBmxJhQzstQWIInmdDxHm+++/l/dSPoqkhUP6v1C0pL+D0WMO1NfXEwFu3rwpvV66NyQ8PLz7hhA5+RGJPrUAKXNS5FFeXk4Oio+IiJDXCCSTDwTR0dHkHxqZG+SHwIiOMJlNpMtt9wih3JKvP/j56bQAKSNA9+/fl/dZrtOnTxNh4G9HJBKR6xUIkPS7rfuawwiCkDx1AQKYVrSQaEFSFSullpNUzYovsYnKtJ65xMKGQ4tJ9craIsxptc3rEPeCFe6wTd/EXJnF3/1czZ1Pr//vf78SA6LFLUB/EaA/fvnlvx99fLV9V2nIStbiRMvESvAqdlK17foan+SSmbPCbBhMiruf1doi16K2gOLO2evrvVasd3PyZKvcIf7qq6+Sd+EhISEyv3p7e5PvC+neDvHKK68Q23bvHaNIXqNM/Hrt2jUnJyfpn6CGI38lkLne9ek9QE8vGdJvsjl79izxTjwSa2vrjo4O8pItk3vk55C6f6qJRLEACYVCspaCmkymHQX2vmPHDnKgdEpKimoC1GswLpdLdsfcvn0bDrN7zZScnAzlRGY4i0zRktkKihZ5+CdOnJAZkkwe+Llz52R6iHx8fC5cuECetT61AClzUuShcj5AhU129sF+yZcaUCWfmyDWX7lyhcViSUdFvoUctnVwcJD+Ccot2epJllvpAIPWBUbsYvbs2TLbwp0Due2+ffuk41dwglTOYQRBpBkMAaJQKRwe3X+B9dJ1oohEUehK/vRgGzbPkmlFX5Mxq6h9Wk4r57EAbbfN7+KkNVjHFVunlfnsOVr32RcfP3z48P9++U/L3gyJAP33wYPfP7lzo31PWVyO5/J05oocJgROrGIl17CSqkCAfFNKZvmHsGh0Cp1BdXCznrfEaVGsx8xgocCeSevzM9p/EhoaSr6AFe5ET506VV1dvX79+uLi4j179pCP7MJPCxculLnotLS0kE+pgB7BVW/79u3kdVz6Inj37t39+/fDdRPuvKH2ItoGpOUjPj5eZQGSSUZtba1MMsh6QplkyESekZFBBIMwH3/8cVdXV25ubnp6emNj4/vvv08e4ObNm+VVEj2mikCxAAGrV68mWw6++OILOCN5eXmQpIaGhsuXL5N7P3TokGrDVJVpAaJIRu+Sb/UlXmmYn5+fmpoKc8gQqLyJlMh8+hsKzP3794mt4ChOnz5dVVVFFC3If/LbWBAz1OgyeyTPGhwF5HNra2tFRcWWLVtOnjz59ddfw0pygG2fXoSouKj0CuQD2TNFvDVUOh/IMwJFSzpJ8BOxCViyzB8R/PWRQ4sgbdJlQKbcHjhwQPlyO5gCBHz55ZdgOUVFRfB3UVNTA/ch5IZw/yDTdKrgUxjdc1impMnLYQRBpBkUAZLcw9EZFA6faufE4NnRrWzEf85W1owVyQElnX45LZzcdk5+p/hrqQVd4uWsrey0Rpv4UpsNVbNOvbz9i3/fbd27/rmXq7/46u7+Y83r8nyiMq3WltkkVrNBfZKqWUk14nlipViAkosD/ObbUGmWkv2Kv8VBpYnn/T+ExMTEr776iqxvyHeOkdc4qKJkvm1EQL7Z9ucnL3cBwsLCiF/hfo68i5UOQEQL975OTk7kxU6mA65PAjSwyeiePyUlJWT1T+YPmTnEt9a7VyGKU0VAtq6RH8jsvneoh6Tjkdk7cPTo0e7vaVShBUhBDkMyQMVIZemxkEA+SI91JbZKSEhQvBVkbI9fwrKysiIb9shtybMGGkQOfupTC5DMSSHilB47pRgV8oF88utnSSepzI7gv7CS2FbmiTCi3ErngEy5dXV1lVduB60LDDKf6OrqMSvgqgKHL3PIik+QaiUNQRBpBkmASKT/ikFK5oS4FWydkdVsm9PGzuvg5HfBJO4Oy23jZLdyMps56Q2sdWW85CL/tHLfvE1zVmX4xmRyQH1S6zhpDbbpDeKXH6bUc8T9XzXshEpuetX0+Jzpbn7Mp/FXDxedWbNmHT58mNQgErh2P//88yEhIfKq55SUFLKTiLg2gU6RFzVwC7hzJS/TBLdv366vryc6Aq5evUqslP6MA6WPY4CeXjIIYA3cuL/00ksyMRADn6Ojo3tMYa+poijRAkSenWPHjsmcHcifS5cupaWl9fie6AHsAiOT4evrCzf6ZKMgCSjFmTNnFi1a1D0GxUULtpJXtAAOh9PS0kIOhSG4e/cuyCIcMvkJ2z4JkDInRTF9ygfpJ7/u3Lkj0wNLYG9v//HHHxNhrly5It3fp3K5HcxB0CwWq6amhhzQTfD999/D3wvxNLtMtIpPUF9zGEGQ7gy2AMnAtrWKTHJPquKmN7Kymtk5beLmH/EEC222Oa222S22mc22oDvx5VYJVaz4UlZyNSe9kZuxmbehiQdzWE7byE2ptU2s5CSWOSYVzQyNFbF5T6vbmyp5RwubzY6IiMjMzCwuLs7Ozl6xYoVIJCLfBSdvQwgD18qCggKoSKZNmyZzyYP/Ojg4wP06BIA4ly9fbm1tTYahP6H7VuRPSqYfkgEJ6DUZ+fn5RDJsbGx6TYZM/sAuVq1aBZsXFhbCXtzd3WGTXjNHQap63a/03rlcLpwRcu9QeSjYu5IZ2Nd8hvBw+qCQZGRkEF0ekJOQMAUp6bFoxcTEQM4ozj3KkzcoxsbG5ubm5uTkgGuCFRF5JW587Snl0ut7jLzXk6J8PsCxk/kQGRnZYz7QpZAXm4IwRLmNj48nyi3koTLlVpnTqkyZlxeJTAMtsbvw8HA4v0Th9PDwkHfd6PUEkYfQ15KGIAjBMxYg8UXWmbVoje3qAuukKn5Gg+OGzfaZTcLMLYIsmLYKspphLoQ1G8QrRes3iSBAVrNjVrNTVpPThs1O6Q1OqTUO68pEa/LtVuY4LY4TiFxo1Kff6Eu8YYx8C1mftlKsAr2G6T+DkAwVYhjAA6f+lf5HOJjJUK1oUZ5O4RmQCAftdAyFky5Njw2HT/U0DZ1jR5ChzzMWIIrkVdFcAdM/xDpyPSu+SLS+xje7MSBn04ysRp/MTZ5Zmz2ymjyzt3jlNE/L2+qbt3VGfsvMgtZZBS1z8prn5jTNydwYkFY9PaHYM2q9/dxlbL79YNgPgiBIr/SphxpBkEHm2QsQRTIwyJrNCI1xnBs1eWE8PTZLmFzumVk/M7cxML8puLAppLA5rKR1SVl7eGXn8pod0TU7V1TviC7vDC9oXpBa5bcyx3V+hNDOhWHFolHw5gdBkKEBChCCDGWGigAxrehL41znRpv5ho73DjL1XTA5YKlFYBQtdDUrJFYQEm2/eLXz0ni3lRk+kWmiZYn8RfGcoBXWs8OpfqFTZixkuvlwxI+4o/0gCDJk6NNDmgiCDDJDRYAYDFpkkmvkBotFCeaBMZP9F032WTDZM9DMc445RzAVAlBpFDqd6jNT5ORn5BJg4jVvgm/IlBlhU6eHmc9abO3my+7PO34QBEEGHGwBQpChzJAQIIDOoEWnusWX0GPzaMszKAvXWs6NtJi+cIpPkAVHaEF58oyMt7+da4CJZ+D46WFms5ZZzI2kzIm0mB9p4z6dgwKEIMiQAgUIQYYyQ0WAGAzaqkyPpBqrdRXMuBJGdDZjcSI9MNrCP4zCFVkSYcCBvGcIvOaPnxE2MTBqasga2qJ1jIVraWFrON4zUYAQBBlahIaG5uTk5ObmSn/lFEGQIcIQEqA12Z5pG62Ta60Sq6zjSqyjs6zC1tECl9N5Dn8KkG+AaOaSifNXTFmUQIlIt4rMsI5IZ4Yn86bN4qIAIQgypMBH0xFkKDNUBIjOoK3a4J62Ufyt+KQam4RKm9VFNsvXM0NX2QgcH4eBi4h/oFNwrMXiRIuoTMbKPNaqfHZMtnXUeoHvXC42MCMIgiAIoiRDRYBodGr4Wuf0BnZKvXVynfjjpvGl7Ohs67B48at9iDBwE+Xtb7c4kRG5gba60Ca+1HZtKXdVATtmA99rJpv4+BeCIAiCIEivDBUBotIoLt42qwu4qbWi5BpBUpUwscJxVZ7D3HArK9afXxCzYTFCV7ITSh3Ta9wyNnplNvqkVLkvTeDy7PDthwiCIAiCKMtQESCKuBGI4uzNWLrWIS7HO6HQLy5nRkiME09El+49h2WuiL5whSitPCB/88LsjQuXJ3o6eFhRsf8LQRAEQRClGUICRHn8Smgq355h72LDF1lb2dC6jx2UvDWRyhUy7V3Ydo4sKxs6ji9EEARBEKRPDC0BQhAEQRAEGQRQgBAEQRAEGXagACEIgiAIMuxAAUIQBEEQZNiBAoQgCIIgyLADBQhBEARBkGEHChCCIAiCIMMOFCAEQRAEQYYdKEAIgiAIggw7UIAQBEEQBBl2oAAhCIIgCDLsQAFCEARBEGTYgQKEIAiCIMiwAwUIQRAEQZBhBwoQgiAIgiDDDhQgBEEQBEGGHShACIIgCIIMO9TMEARBEARBhhkoQAiCIAiCDDtQgBAEQRAEGXaofYUgCIIgCDLMUPvmm2/u37+Pc5zjHOc4xznOcT585mr3EQRBEARBhhnYAoRznOMc5zjHOc6H3RxbgBAEQRAEGXZgCxDOcY5znOMc5zgfdnNsAUIQBEEQZNiBLUA4xznOcY5znON82M3VyCUCXMZlXMZlXMZlXMblf/wytgDhHOc4xznOcY7zYTf/cwwQ8X9cxmVc/n/27jxOrrLM23jPKM5HndFZXF5nRgRUBnVERlnCJmELiyxh35VhUVSQfZVFQWR7lchOWOQFHJjBUUAhJIEk7GRlJ4EkJIGwJEIQxxFH0Hlv+uk8OVR1N51OdXWlnu/1x/X5dfWpU6erCs4vdz1VJcuyLLd9NgFiZmbm4mwNkCzLsizLxWUTIGZmZi7OHYN+BMzMzMxNtgkQMzMzF2cTIGZmZi7OJkDMzMxcnE2AmJmZuTibADEzM3NxNgFiZmbm4vzmBCiRfpZlWZZlWW77bALEzMzMxXnJGqCELMuyLMty22cTIGZmZi7O1gDJsizLslxcNgFiZmbm4rxkAgQAAFAIJkDMzMxcnE2AAABAcZgAMTMzc3E2AQIAAMVhAsTMzMzF2QQIAAAUR9cEKCHLsizLslxCNgECAADF0VWAWqGLybIsy7IsNyebAAEAgOKwBkiWZVmW5eKyCRAAACgOBQgAABSHAgQAAIpDAQIAAMWhAAEAgOJQgAAAQHEoQAAAoDgUIAAAUBxdBejll1/OF8myLMuyLLd3NgECAADF0dE6XUyWZVmWZbk52QQIAAAUhzVAsizLsiwXl02AAABAcXStAWJmZmYuxyZAAACgOEyAmJmZuTibAAEAgOIwAWJmZubibAIEAACKwwSImZmZi3NHTglZlmVZluW2zyZAzMzMXJyXrAFKP8uyLMuyLLd9NgFiZmbm4mwNkCzLsizLxWUTIGZmZi7OHYN+BMzMzMxNtgkQMzMzF2cTIGZmZi7OJkDMzMxcnE2AmJmZuTibADEzM3NxNgFiZmbm4vzmBCiRfpZlWZZlWW77bALEzMzMxXnJGqCELMuyLMty22cTIGZmZi7O1gDJsizLslxcNgFiZmbm4rxkAgQAAFAIJkDMzMxcnE2AAABAcZgAMTMzc3E2AQIAAMVhAsTMzMzF2QQIAAAUR9cEKCHLsizLslxCNgECAADF0VWAWqGLybIsy7IsNyebAAEAgOKwBkiWZVmW5eKyCRAAACgOBQgAABSHAgQAAIpDAQIAAMWhAAEAgOJQgAAAQHF0LFq0KP8gy7Isy7JcQjYBAgAAxdFVgFqhi8myLMuyLDcnmwABAIDisAZIlmVZluXisgkQAAAoDmuAZFmWZVkuLpsAAQCA4uhaA8TMzMxcjk2AAABAcZgAMTMzc3E2AQIAAMVhAsTMzMzFeckEKP0sy7Isy7Lc9tkEiJmZmYtzR04JWZZlWZblts8mQMzMzFycrQGSZVmWZbm4bALEzMzMxblj0I+AmZmZuck2AWJmZubibALEzMzMxdkEiJmZmYuzCRAzMzMXZxMgZmZmLs4mQMzMzFycl0yAErIsy7Isy22fTYCYmZm5OL85AUqkn2VZlmVZlts+mwAxMzNzcbYGSJZlWZbl4rIJEDMzMxfnJWuAAAAACsEEiJmZmYuzCRAAACgOEyBmZmYuziZAAACgOEyAmJmZuTibAKF92G677dbr5Pjjjx/sY+niqquuWn/99dNRTZgwIf1XBwAYdLoKUPX/y7K8nObNN9/8850ceeSRrXA84csvv3zNNddMR3XHHXe83EmLHJssy3LJ2QQIy8pBBx209tprr9UD66677tChQ7fbbrtvfvOb0QaeeeaZgTuSbgvQ4FJfgAb7iAAAb9LROl1MXk7zV7/61S984Quffztim6gCm2666Y9//OMBOp7DDjvsX//1X/fbb7/zzz+/Re6fagG6/fbb869a4dhkWZZLziZAWFZyARoyZMgOdWy33XabbLJJtSGttdZa55133ksvvdTwI3mpQsN33j9MgACgNbEGSF7WnAvQtttuu2DBgoULF/5qMTlPmzbtO9/5zjrrrJOqwNprrz1+/Pi0h0E//gHNUYBy80t/cuscmyzLcsnZBAjLygEHHJAK0HbbbRddp9tt4tn20ksvXXvttXkUdMghh7TOnGbgqC9Ag31EAIA3UYCwrOQJUC8FKBGn/3333TdtvPHGG/e+cXtwxRVXeAkMAFoQBQjLSt8LUPB//+//zUOgGTNm9LLlE088cd111/3oRz8688wzR4wYETku6X3nscHDDz/80EMP9b7nxC9+8YsLL7zwrLPOOv/883/605/2/e1p48ePv/TSS88555yzzz77kksuuf322xcuXNjTxt2uAXruuef+4z/+47zzzoudjBw58oEHHlCMAKDJKEBYVpaqAFULwT333NPtNmPHjj3wwAPXWWed2PILi4k8ZMiQuPzOO+/saee77rrrmp0ccMABPW0TZSVK1bBhw9KWeefrr7/+EUccEf2ply5y0UUXbbPNNmuttVb1isGWW24Zxe7FF1/s/e+NAhTbnH766ZtuumnNHvbYY48xY8b0es8BABqJAoRlZakK0Pnnn58nQNOmTavfYMSIEeuuu25P76uPy+O31157bbc1Zeedd06b7bffft3e+pw5c77yla/0svPNNtts3Lhx9Tt//vnn48/MVabb6375y1+eN29ezRWrBWjUqFH77LNPt7ceF26wwQa/+MUvjIIAoDkoQFhWlqoAHX744b2sARo5cmSuC2uttdaBBx542mmnXXDBBd/73vd22223XBfWW2+9O++8s74r9F6AosTsueeeuX9su+22sdsoZOFddtklX77llls+9dRTNdc98cQT8wbDhg07/vjjzzvvvB/96EdHHXXURhttlEvMN7/5zZqV3dUCtNNOO8U2a6+9dhxe7PD000//1re+NXTo0Px3bbXVVvPnz+/TnQ4AWDYUICwrfS9AEydOXH/99dPJPhpATVeYPXt2LhNbb731PffcE3uLbdI7yIIf/OAHuYXUV41Fb1eA4hZzFznmmGOiD1V3PmLEiPzbE044oXrFRx99dMiQIelXUZXmzJlT/cChhx56aPjw4em3sYfbbrut2syqBSjYfffdJ02alP6uxIwZM6Lb5b/ryiuvNAQCgCagAGFZ6WMB+tnPfrbVVlul03xs+eSTT9ZsUH3D1I033ljfA6Iu5DeRRVWqv61eCtDkyZPzpxBF4ahfthw7P+SQQ9IGsfNnn3222wO76aabaq4Yx3nnnXeuvfbaaYNTTjml2syqBShud968efV/1wMPPJCP7dBDDy3h0wEAYNDpeOWVV/IPstyPnAtQ9IZjjz32uLdyxBFHHHDAAVtuuWXuAbvsssu0adOiB9Ts5+abbz755JNPOumkcC43NdtUh0D5rV55m5oCVL1u7DYPaaqfx1PdZuzYsXlUU21g5557br7Rhx56qP5+iC3jFrfpJA6+WnGiPOV9jh49utvbTUeebmKnnXbq6W+XZVmWG5hNgLCs5A9C/HznOphuSb9dZ511osE8//zz3b7Kk1+N6mUEUl0kdN9999X8tpcJ0A477JB+NXz48J5eY4rL11tvvbTZWWedlS+/6qqr8o1efPHF3V43jjl95nX9GqBcgHr5IMSDDz443UtbbbVVCR+PBACDTlcBaoUuJi+nuY9fhpoYOnToiBEjqj1gqW7rsssuy13k3nvvXVQhtqkWoFxE4vI5c+bk15iOOeaYWbNmzZ49++mnn569mJw322yztNnxxx8fe0i3O3PmzC9+8Yvp8g022CA6XHWVdO/HXP9BiN1uf/TRR6f7cJNNNokCNOiPqSzLcttnEyAsK7kADRs27Lrrrvv3t3L99ddHaznqqKOiOuQp0cknn9z7SpcHHnggetIRRxyx//7777XXXnssZptttsldKgpQzUCl2wKU9pZbSNz6Wj2Td16zFif+hLzKJ70VP47q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vvdDH/rQpz71qeHDh59//vnplNkKc4vkPfbYY5NOvva1r/Vx+0033TS2P/HEE1vtbzEBYuZybAKERrKME6D7779/n332icbz53/+53/2Z3/WUeHPOnnHO96x5ppr/vSnP+3f/geCj3/84+nYVlhhhQsuuOBt//ZPfvKT6a/beeedJ0+e3JyDbHFMgAA0HxMgbqSXZQJ09913r7vuurn3REv4yEc+8pnPfGb11VdfZZVV3vWud+Um9Ld/+7eXXXZZA1caRRdZr5MjjzwyNZi+XzeOLbe0VVdd9b777ut9+5VXXjn9jbvsssvS3la7emrnBGjBggWt8Bxm5kJsAoRGsiwToOHDh0fpSRVn0003vfbaaydVGDdu3Ne//vX3v//9qWp88IMfvOmmm/pxK90SxSVNcbbffvulncpUC1DsYb/99ut9D5/4xCdSATIBypgAAWg+JkDcSPd7AnT99dfnGc9OO+00ceLEdGqsbhO7vfLKK//6r/86bbbllls2agIRpSTtM0rY0l63WoCC9773vf/2b//Wy/Yrr7xy2nKXXXZphelLK3iqCRAzN90dOSVkeVlynMPyBCif2/qS999//zT+ed/73jd+/Pietg8OPPDAVCDe8573xJZ93H/vOU2AYp/VCVAfr5sLUDr+YM0116yOdmq2zxOgKEBLe1vtmvMEqBWew7IsF5JNgLiR7vcEaKuttkq1YPXVV0+1oKctf/GLX+R1QmeddVZPW0Y3OuOMM4444oijjjrq+9///pgxY+q3mThx4t2d5AK07bbbxpk4XdjHI88FaOjQoX/xF3+RXgg79thjq2f6mmlTfgms9zVAP/vZz0455ZTDDz/8sMMO++53v3vzzTf3tM/q3zJp0qR8+TXXXBN7iKufeuqpsbf6x+W2224755xz4l465phjRo4c2cv+a5zv3iOPPDLdvcs+AfIuMGZuppesAUo/y/Ky5LQGaGqFPs4Attxyy1QLPv3pT6dTeC/bf+Yzn1mlkziv128TRSH29pd/+Zd/XiGqyTrrrHPppZdWj22XXXZ55zvf+Y53vCM3qvRGs8SFF17Yl291zQVo11133W233dKuPvCBD9xyyy3dbl9dBB1Vr9ttoo780z/9UxxD9U+IQ/3sZz979tlnd/tNI3vuuWc67O222y4uj1pTs4e4BzbaaKNRo0al7aPBDB8+/H3ve1/1JlZaaaXTTz+99783Cmi01Z7u3v59C0rNGqDWeT7LstzG2QSIG+l+T4DyS2Dvete7rrvuut73EA0pqkNNT0q+6KKL/u7v/q7mLfS53Lz73e+ufvpOVJBut0xccMEF9fvvZQIU7WfChAkrrrhi+nGLLbbI/abvE6B77703akq1k9X8CfGrr3zlK/V7zt1rgw02+PrXvx53Y/0e4pJPfvKTY8eOjXIWRTO/Zlclrvjtb3+7p/v/4osv/uAHP9j73duPR3+qCRAzN93WAMmNzP1eAxSlJ71+FMRJ+mc/+1nfr5vzj3/847/6q79KO4mT8TbbbHPkkUcedthhW2211Xvf+958eWyWrnXGGWdEb9h9993/9m//Nv12tdVWS4Oc4D//8z/7Ms/IBSj2E5ecddZZ0VHix/A555xTv32eAMUN1a8B2myzzXIvWWmllfbaa6/4E772ta8NGzYs3z+xwamnnlpzPHHA6bcf+MAHVlhhhfgzhw4duu+++x500EFbb711/vPjpmOf66+/foS4cMstt4wN9ttvv3XWWSff7l//9V9HQ6r/e/t491511VVLOweyBkiW5eZnEyBupPs9AZra+YJUagbh97///fvss09+o3tf9jBp0qRVV101nYaj0FxxxRVTFhM945prrvnwhz+cfrv22munCUr+bV4DtN1226XxUvpVX263OgFK14qykvb2sY99LO6Nmu17mQCNGDEiladgjz32mDhxYjqS5CgWH/zgB9NvP/3pT9eslMoToOAf/uEf0ocI5OvGj/m6UaRiy7//+7+//vrrq9scffTRuQMdcMABNccWB5Pvpb/5m7+5/PLLq9e9+uqra+7epX30TYCYucnuGPQj4HZymgD1vbVUnapD9SWVOFX/y7/8S5yMr7zyyrfd51FHHZXP3yeccELN9rHzk046KW3wzne+84Ybbqj2m/Rpzh2db4Pv9nWrXlwzAYpLbrnllqgI6cK99967pknUTICqe9txxx3Tr1ZcccX6V8eCb3zjG2m38Sfk98olx62nX0WFSmtxaq578MEH5/snbuWcc86pufXgs5/9bDqAL3zhCzW/PfbYY/PV618jC0488cR8bPmjuvt4H6YJUBSgVngOM3MhNgHiRnoZvwssrnj44Yd/4AMfqNagtMz2H//xH3feeedrr722pzPrZz7zmXTyjrN49Z1Q1bPshz70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xdk5AiSllFJKWU4aAQIAimMESEoppZTFpREgAKA4RoCklFJKWVwaAQIAimMESEoppZTF5XMjQPmxWq1Wq9VqddvXRoCklFJKWVx2VFVSq9VqtVqtbvvaCJCUUkopi0tzgNRqtVqtVhdXGwGSUkopZXHZ0fIlkFJKKaUc4DQCJKWUUsri0giQlFJKKYtLI0BSSimlLC6NAEkppZSyuDQCJKWUUsri0giQlFJKKYvL50aAklqtVqvVanXb10aApJRSSllcPjsClPJjtVqtVqvV6ravjQBJKaWUsrg0B0itVqvVanVxtREgKaWUUhaXz80BAgAohBEgKaWUUhaXRoAAgOIYAZJSSillcWkECAAojhEgKaWUUhaXRoAAgOLsbICyG1Kr1Wq1Wq0uoTYCBAAUp6M+vZharVar1Wr1wNRGgACA4pgDpFar1Wq1urjaCBAAUBwNEABQHA0QAFAcDRAAUBwNEABQHA0QAFAcDRAAUBwNEABQnI5//OMf1QdqtVqtVqvVJdRGgACA4uxsgOrQi6nVarVarVYPTG0ECAAojjlAarVarVari6uNAAEAxdk5AiSllFJKWU4aAQIAimMESEoppZTFpREgAKA4RoCklFJKWVwaAQIAimMESEoppZTF5XMjQPmxWq1Wq9VqddvXRoCklFJKWVx2VFVSq9VqtVqtbvvaCJCUUkopi0tzgNRqtVqtVhdXGwGSUkopZXHZ0fIlkFJKKaUc4DQCJKWUUsri0giQlFJKKYtLI0BSSimlLC6NAEkppZSyuHx2BCjlx2q1Wq1Wq9VtXxsBklJKKWVx+dwcoKRWq9VqtVrd9rURICmllFIWl+YAqdVqtVqtLq42AiSllFLK4tIcILVarVar1cXVRoCklFJKWVw+NwcIAKAQRoCklFJKWVwaAQIAimMESEoppZTFpREgAKA4O0eAklqtVqvVanUJtREgAKA4OxugOvRiarVarVar1QNTGwECAIpjDpBarVar1eriaiNAAEBxzAFSq9VqtVpdXG0ECAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAojgYIACiOBggAKI4GCAAoTgcAAAAAAAAA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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-658265540397047133.post-18366703110741497192013-08-11T20:40:00.000+05:302014-02-21T16:44:39.009+05:30 Instant Adapter View Handler Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
Get Instant Adapter Library from the following Url : <a href="https://github.com/ragunathjawahar/instant-adapter">https://github.com/ragunathjawahar/instant-adapter</a> <br />
<br />
<h3 style="text-align: left;">
<b><u><span style="color: red;">Import and Add Instant library Project to your Project as shown below :</span></u></b></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIErpo_XZB5YkeUoRjoG0OKBVJwCSl07bKheNsUXhze71h1aguSdX__6e4MxOBQdDqCfn6xcsDA_GjBUJx8eCqIHdNV_d7a1U6RO705lS3AKPe8H_Tj7FLgwOAQmO7AWxormblTby74g/s1600/instant-adap-lib-img1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIErpo_XZB5YkeUoRjoG0OKBVJwCSl07bKheNsUXhze71h1aguSdX__6e4MxOBQdDqCfn6xcsDA_GjBUJx8eCqIHdNV_d7a1U6RO705lS3AKPe8H_Tj7FLgwOAQmO7AWxormblTby74g/s640/instant-adap-lib-img1.png" height="356" width="640" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlQm0HHULFwzjv2NslB-1CLwhrGEBAOpwrFo-k3kyk9E2TTcs1f9LH2d35h7LksCAlrulLeDzOnIWn4Av-gtqjJXr2Lo_vsaZzfOl_LWb8VLK3LFXrriFyN23ZhyphenhyphenQVq7KqOwPziyhWz4/s1600/instant-adap-lib-img2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlQm0HHULFwzjv2NslB-1CLwhrGEBAOpwrFo-k3kyk9E2TTcs1f9LH2d35h7LksCAlrulLeDzOnIWn4Av-gtqjJXr2Lo_vsaZzfOl_LWb8VLK3LFXrriFyN23ZhyphenhyphenQVq7KqOwPziyhWz4/s640/instant-adap-lib-img2.png" height="358" width="640" /></a></div>
<br />
Then use the following code :<br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u><b>In activity_main.xml</b></u></span></span></h3>
<br />
<span style="color: #0b5394;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <ListView<br /> android:id="@+id/name_list_view"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" /><br /><br /></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;"><span style="font-size: large;"><b><u><span style="color: red;">In list_item.xml</span></u></b></span></span></h3>
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <LinearLayout<br /> android:layout_width="match_parent"<br /> android:layout_height="wrap_content"<br /> android:orientation="horizontal" ><br /><br /> <ImageView<br /> android:id="@+id/person_image"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:src="@drawable/ic_launcher" /><br /><br /> <TextView<br /> android:id="@+id/person_name"<br /> android:layout_width="wrap_content"<br /> android:layout_gravity="center_vertical"<br /> android:layout_height="wrap_content"<br /> android:text="TextView" /><br /> <br /> </LinearLayout><br /><br /></RelativeLayout></span><br />
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">Create Person.java Model</span></u></b></span></h3>
<span style="color: #0b5394;">package com.rajeshvijayakumar.insta;<br /><br />public class Person {<br /><br /> private int photoResId;<br /> private String name;<br /><br /> public Person(int photoResId, String name) {<br /><br /> this.photoResId = photoResId;<br /> this.name = name;<br /> }<br /><br /> public int getPhotoResId() {<br /> return photoResId;<br /> }<br /><br /> public void setPhotoResId(int photoResId) {<br /> this.photoResId = photoResId;<br /> }<br /><br /> public String getName() {<br /> return name;<br /> }<br /><br /> public void setName(String name) {<br /> this.name = name;<br /> }<br /><br />}</span><br />
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">MainActivity.java</span></u></b></span></h3>
<span style="color: #073763;">package com.rajeshvijayakumar.insta;<br />public class MainActivity extends Activity implements Evaluator<Person>,<br /> OnItemClickListener {<br /><br /> private ListView mPersonListView;<br /> private InstantAdapter<Person> mAdapter;<br /> private List<Person> mPersons;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mPersonListView = (ListView) findViewById(R.id.name_list_view);<br /> mPersons = getPersons();<br /> mAdapter = new InstantAdapter<Person>(MainActivity.this,<br /> R.layout.list_item, Person.class, mPersons);<br /> mAdapter.setViewHandler(R.layout.list_item, MainActivity.this);<br /> mAdapter.setViewHandler(R.id.person_image, MainActivity.this);<br /> mAdapter.setViewHandler(R.id.person_name, MainActivity.this);<br /> mPersonListView.setAdapter(mAdapter);<br /> mPersonListView.setOnItemClickListener(this);<br /> }<br /><br /> private List<Person> getPersons() {<br /> List<Person> personLst = new ArrayList<Person>();<br /> personLst.add(new Person(R.drawable.ic_fav, "Rajesh"));<br /> personLst.add(new Person(R.drawable.ic_rate, "Mahesh"));<br /> personLst.add(new Person(R.drawable.ic_person, "Akshay"));<br /> personLst.add(new Person(R.drawable.ic_group, "Aakash"));<br /> return personLst;<br /> }<br /><br /> @Override<br /> public void handleView(ListAdapter adapter, View parent, View view,<br /> Person person, int position) {<br /><br /> switch (view.getId()) {<br /> case R.id.person_image:<br /> ((ImageView) view).setImageResource(person.getPhotoResId());<br /> break;<br /> case R.id.person_name:<br /> ((TextView) view).setText(person.getName());<br /> break;<br /> }<br /> }<br /><br /> @Override<br /> public void onItemClick(AdapterView<?> adpaView, View v, int position,<br /> long id) {<br /> Toast.makeText(this, mPersons.get(position).getName().toString(),<br /> Toast.LENGTH_SHORT).show();<br /> }<br />}</span><br />
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">Output :</span></u></b></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPpKK9XrO7p6iqUTsppv752gCbeltIbe-BES9aIzMrmPka88fjXEhV5VbiH-3-bxZah3eznFCXWhSU0P83YcEl0jqPU-_jbZbByg9l-zSMmB12kx7Tpa2JO6_GO-Znn2wUpWxturaZvgs/s1600/output1.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" height="400" src="data:image/png;base64,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xmM8xmM8/scfowUIffTRRx999NHvdz7OAcJjPMZjPMZjPMbjfnespgXo22+/vXv37rlz51599dUDBw7s2bNn3759R48efe+9965fvw6/doz14MGDzz77DAKcOHFi//79EL69vf2dd965cuUK/KRGGdBHH3300UcfffTV8zXUiPPNN99cu3btzTffbG1tra6uzs/Pz8nJyc3NLS4ubmhoOHjw4Mcff3z//n3pWPfu3bt48eKhQ4c2btxYXl5eUFCQl5dXWlq6fv16UEJnz5794osvQDb1hRpBH3300UcfffT/8b7KFiDgs88+O378eElJSWpqanJyclpaWroEOE5JScnOzt6yZctHH30EOomIBQcXLlyAk/BTUlIShCGiQHj4Ew7q6+vfeeedu3fv9oUaQR999NFHH330//G+ahYg4Kuvvmpvby8vLwf1A9ol43kIJZSVlbVt27bz588TsT7++GP4MzMzs2MUIjycX79+/Ztvvil37Ax99NFHH3300Ue/e33VLEBff/316dOn6+vrQbukpaVlyIMQNMXFxfv37799+/bnn39+8ODBkpKSlJSUjoKJAMJnZ2c3NzefPXuWtBuhjz766KOPPvro95CvggXowYMHt27d2rJlS2FhIagZuVKG1EAgj+rq6t6SAIKJGPPqJApoIEh2+/btN2/eRDsQ+uijjz766KPfo74KFqD79++fO3eutLSUGLfqRM0QgiY/P3/Dhg0NDQ1woMhcJKOZSkpKPvzwwy+//PKl1wv66KOPPvroo/8P9lWwAN24cePo0aPZ2dkvVDMkWRKUDAyaCQLv37//+vXrL71e0EcfffTRRx/9f7AvtgAREH93cnzlypUtW7ZkKJ7900UIq1Jra+ulS5ceSlC+bL1zvG/fvsbGxq1bt/7rX//q6bwePHiwUcKxY8de1vXiMR7jMR7jMR7/U49VsABduHAB+mNlxr/Ug5gnVF9f/9FHHxEKQ/my9Y4fEfH/7J33W1Tnur/5m9SgkZgYY2x7G9s+sSYm2duanm0FlSYCGgRsIGAXRRQLTQUVKdLEggIWQJEmCmpOP+f70/fJPLhYZwZwGIYi733/cF+fWaxZa82YK/O5nnlnZumYMWNmzJgxCKuUGhsbxzhYu3btcHjsGGOM8Uhy1xogpZcsBUjaiS7WGYgCpNVKTlFRUWGd2s1rCwoKmuzgs88+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" width="240" /></a></div>
<br />
<span style="color: #073763;">Source Code :</span> Coming soon to Github...........<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-71337511236167757742013-07-31T00:00:00.000+05:302013-07-31T00:00:06.073+05:30Converting a Layout view to Image in Android Example<div dir="ltr" style="text-align: left;" trbidi="on">
<u><b><span style="color: red;"><span style="background-color: white;"><span style="font-size: medium;">First Add permission for external storage in Manifest.xml file</span></span></span></b></u><br />
<br />
<?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="org.rajeshvijayakumar.view2imagedemo"<br /> android:versionCode="1"<br /> android:versionName="1.0" ><br /><br /> <uses-sdk<br /> android:minSdkVersion="8"<br /> android:targetSdkVersion="17" /><br /><br /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><br /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><br /><br /> <application<br /> android:allowBackup="true"<br /> android:icon="@drawable/ic_launcher"<br /> android:label="@string/app_name"<br /> android:theme="@style/AppTheme" ><br /> <activity<br /> android:name="org.rajeshvijayakumar.view2imagedemo.MainActivity"<br /> android:label="@string/app_name" ><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /> </application><br /><br /></manifest><br />
<h3 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u><b>img_view.xml</b></u></span></span></h3>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:background="#ffffffff" ><br /><br /> <ImageView<br /> android:id="@+id/imageView1"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:src="@drawable/ic_launcher" /><br /><br /> <TextView<br /> android:id="@+id/textView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentBottom="true"<br /> android:layout_centerHorizontal="true"<br /> android:layout_marginBottom="25dp"<br /> android:text="Android Jelly Bean 4.3"<br /> android:textColor="@android:color/holo_green_dark"<br /> android:textSize="21sp" /><br /><br /></RelativeLayout><br />
<h3>
<span style="font-size: large;"><span style="color: red;"><u><b>home.xml</b></u></span></span></h3>
<?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <Button<br /> android:id="@+id/button1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentBottom="true"<br /> android:layout_centerHorizontal="true"<br /> android:text="Convert" /><br /> <br /> <include android:id="@+id/f_view"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> layout="@layout/img_view"<br /> android:layout_above="@id/button1"/><br /><br /></RelativeLayout><br />
<h3 style="text-align: left;">
<span style="color: red;"><span style="font-size: large;"><u><b>MainActivity.java</b></u></span></span></h3>
<br />
package org.rajeshvijayakumar.view2imagedemo;<br /><br />import java.io.ByteArrayOutputStream;<br />import java.io.File;<br />import java.io.FileOutputStream;<br /><br />import android.app.Activity;<br />import android.graphics.Bitmap;<br />import android.os.Bundle;<br />import android.os.Environment;<br />import android.view.View;<br />import android.view.View.MeasureSpec;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br /><br />public class MainActivity extends Activity implements OnClickListener {<br /><br /> private Button mButton;<br /> private View mView;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.home);<br /> mView = findViewById(R.id.f_view);<br /> mButton = (Button) findViewById(R.id.button1);<br /> mButton.setOnClickListener(this);<br /><br /> mView.setDrawingCacheEnabled(true);<br /> mView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),<br /> MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));<br /> mView.layout(0, 0, mView.getMeasuredWidth(), mView.getMeasuredHeight());<br /> mView.buildDrawingCache(true);<br /> }<br /><br /> @Override<br /> public void onClick(View v) {<br /><br /> if (v.getId() == R.id.button1) {<br /> Bitmap b = Bitmap.createBitmap(mView.getDrawingCache());<br /> mView.setDrawingCacheEnabled(false);<br /> ByteArrayOutputStream bytes = new ByteArrayOutputStream();<br /> b.compress(Bitmap.CompressFormat.JPEG, 100, bytes);<br /><br /> File f = new File(Environment.getExternalStorageDirectory() + File.separator + "v2i.jpg");<br /> try {<br /> f.createNewFile();<br /> FileOutputStream fo = new FileOutputStream(f);<br /> fo.write(bytes.toByteArray());<br /> fo.close();<br /> } catch (Exception e) {<br /> }<br /> finish();<br /> }<br /> }<br />}<br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Output :</span></u></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLFPG-OEMG4UwepiAsaLkaWfntk1mt9NiBCVT3PsUEG2t1x8DjZXQ4_nMlWQ4ukcDUOnmBLSQ09qJ12k0YTlnX3yuxitSTVpNqhz4RoA72XdykEGyPZvJHZHwYCBgYGWXWU0Gl47f7hhs/s1600/device-2013-07-30-234032.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLFPG-OEMG4UwepiAsaLkaWfntk1mt9NiBCVT3PsUEG2t1x8DjZXQ4_nMlWQ4ukcDUOnmBLSQ09qJ12k0YTlnX3yuxitSTVpNqhz4RoA72XdykEGyPZvJHZHwYCBgYGWXWU0Gl47f7hhs/s1600/device-2013-07-30-234032.png" height="400" width="240" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPCC4biNcp9jc5OrbLLBaNI0EAZc3OL26Zmea43X5_9y91HefdP5PT2pkfLuZJtBAjqaNimthyphenhyphen24ZIiNW-uI8eEvKUvXXbAQEGnIwk-dr4APIPA1rkTmuWbK9EfUyx6EwCMTwpjW6Sh7o/s1600/device-2013-07-30-235120.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPCC4biNcp9jc5OrbLLBaNI0EAZc3OL26Zmea43X5_9y91HefdP5PT2pkfLuZJtBAjqaNimthyphenhyphen24ZIiNW-uI8eEvKUvXXbAQEGnIwk-dr4APIPA1rkTmuWbK9EfUyx6EwCMTwpjW6Sh7o/s1600/device-2013-07-30-235120.png" height="400" width="240" /></a></div>
<br />
<br />
Source Code : Coming Soon to Github..........</div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-658265540397047133.post-78267942300722351832013-07-28T23:07:00.000+05:302013-07-28T23:08:32.284+05:30Listing Files from SDCard in Android Example<div dir="ltr" style="text-align: left;" trbidi="on">
<u><b><span style="color: red;"><span style="background-color: red;"><span style="font-size: large;"><br /></span></span></span></b></u>
<u><b><span style="color: red;"><span style="background-color: white;"><span style="font-size: large;">First Add permission for external storage in Manifest.xml file</span></span></span></b></u><br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"<br />
package="org.rajeshvijayakumar.fldemo"<br />
android:versionCode="1"<br />
android:versionName="1.0" ><br />
<br />
<uses-sdk<br />
android:minSdkVersion="8"<br />
android:targetSdkVersion="17" /><br />
<br />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><br />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><br />
<br />
<application<br />
android:allowBackup="true"<br />
android:icon="@drawable/ic_launcher"<br />
android:label="@string/app_name"<br />
android:theme="@style/AppTheme" ><br />
<activity<br />
android:name="org.rajeshvijayakumar.fldemo.MainActivity"<br />
android:label="@string/app_name" ><br />
<intent-filter><br />
<action android:name="android.intent.action.MAIN" /><br />
<br />
<category android:name="android.intent.category.LAUNCHER" /><br />
</intent-filter><br />
</activity><br />
</application><br />
<br />
</manifest><br />
<h3 style="text-align: left;">
<span style="color: red;"><span style="font-size: large;"><u><b>flist.xml</b></u></span></span></h3>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:layout_width="fill_parent"<br />
android:layout_height="fill_parent" ><br />
<br />
<ListView<br />
android:id="@+id/listView1"<br />
android:layout_width="fill_parent"<br />
android:layout_height="fill_parent" /><br />
<br />
</RelativeLayout><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;"><span style="font-size: large;">fl_list_item.xml</span></span></u></span></h3>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:layout_width="fill_parent"<br />
android:layout_height="fill_parent" ><br />
<br />
<TextView<br />
android:id="@+id/fname"<br />
android:layout_width="fill_parent"<br />
android:layout_height="wrap_content"<br />
android:text="Large Text"<br />
android:textAppearance="?android:attr/textAppearanceLarge" /><br />
<br />
</RelativeLayout><br />
<span style="color: red;"><span style="font-size: large;"><b><u><br /></u></b></span></span>
<span style="color: red;"><span style="font-size: large;"><b><u>MainActivity.java</u></b></span></span><br />
<br />
package org.rajeshvijayakumar.fldemo;<br />
<br />
import java.io.File;<br />
import java.util.ArrayList;<br />
import java.util.List;<br />
<br />
import android.app.Activity;<br />
import android.app.AlertDialog;<br />
import android.content.Context;<br />
import android.content.DialogInterface;<br />
import android.os.Bundle;<br />
import android.os.Environment;<br />
import android.view.View;<br />
import android.view.ViewGroup;<br />
import android.widget.AdapterView;<br />
import android.widget.AdapterView.OnItemLongClickListener;<br />
import android.widget.ArrayAdapter;<br />
import android.widget.ListView;<br />
import android.widget.TextView;<br />
<br />
public class MainActivity extends Activity implements OnItemLongClickListener {<br />
<br />
private ListView mListView;<br />
private List<String> fileNameList;<br />
private FlAdapter mAdapter;<br />
private File file;<br />
<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.flist);<br />
mListView = (ListView) findViewById(R.id.listView1);<br />
file = Environment.getExternalStorageDirectory();<br />
fileNameList = getFileListfromSDCard();<br />
mAdapter = new FlAdapter(this, R.layout.fl_list_item, fileNameList);<br />
mListView.setAdapter(mAdapter);<br />
}<br />
<br />
private List<String> getFileListfromSDCard() {<br />
String state = Environment.getExternalStorageState();<br />
List<String> flLst = new ArrayList<String>();<br />
if (Environment.MEDIA_MOUNTED.equals(state) && file.isDirectory()) {<br />
File[] fileArr = file.listFiles();<br />
int length = fileArr.length;<br />
for (int i = 0; i < length; i++) {<br />
File f = fileArr[i];<br />
flLst.add(f.getName());<br />
}<br />
}<br />
<br />
return flLst;<br />
}<br />
<br />
public class FlAdapter extends ArrayAdapter<String> {<br />
<br />
private List<String> fLst;<br />
private Context adapContext;<br />
<br />
public FlAdapter(Context context, int textViewResourceId,<br />
List<String> fLst) {<br />
super(context, textViewResourceId, fLst);<br />
this.fLst = fLst;<br />
adapContext = context;<br />
}<br />
<br />
@Override<br />
public View getView(int position, View convertView, ViewGroup parent) {<br />
<br />
View view = convertView;<br />
FHolder fHolder = null;<br />
<br />
if (convertView == null) {<br />
view = View.inflate(adapContext, R.layout.fl_list_item, null);<br />
<br />
fHolder = new FHolder();<br />
fHolder.fNameView = (TextView) view.findViewById(R.id.fname);<br />
<br />
view.setTag(fHolder);<br />
} else {<br />
fHolder = (FHolder) view.getTag();<br />
}<br />
String fileName = fLst.get(position);<br />
fHolder.fNameView.setText(fileName);<br />
<br />
return view;<br />
}<br />
}<br />
<br />
static class FHolder {<br />
public TextView fNameView;<br />
}<br />
}<br />
<br />
<span style="color: red;"><span style="font-size: large;"><u><b>Output :</b></u></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjrASH7hJDS0xG7V5EU1ZfXQ-GaogZuTpnBmG9m96Wx1EFThfRKHMQw15VFPjdRWYO3KLUIwduajBH1EURvDDik5l9_Sf1VlIKWEjoFwkECoY2_kwjcxUGp3ys1AHTU7pf8C1SmyoPKY/s1600/device-2013-07-28-225457.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjrASH7hJDS0xG7V5EU1ZfXQ-GaogZuTpnBmG9m96Wx1EFThfRKHMQw15VFPjdRWYO3KLUIwduajBH1EURvDDik5l9_Sf1VlIKWEjoFwkECoY2_kwjcxUGp3ys1AHTU7pf8C1SmyoPKY/s1600/device-2013-07-28-225457.png" height="400" width="240" /> </a> </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Source : Coming Soon to Github.............</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-658265540397047133.post-8410191464525715182013-05-23T01:24:00.000+05:302013-05-23T01:24:26.560+05:30Show Case View Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">activity_main.xml</span></u></span></h3>
<span style="color: #0b5394;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="match_parent"<br /> android:layout_height="match_parent"<br /> tools:context=".MainActivity" ><br /><br /> <TextView<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_centerHorizontal="true"<br /> android:layout_centerVertical="true"<br /> android:text="This is Original View" /><br /><br /></RelativeLayout></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">overlay_view.xml</span></u></span></h3>
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <ImageView<br /> android:id="@+id/over_lay_image"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:background="#50220000" /><br /><br /> <TextView<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentTop="true"<br /> android:layout_centerHorizontal="true"<br /> android:layout_marginTop="30dp"<br /> android:text="This is Overlay View" /><br /><br /></RelativeLayout></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">MainActivity.java</span></u></span></h3>
<span style="color: #0b5394;">package com.rajeshvijayakumar.overlay;<br /><br />import android.app.Activity;<br />import android.app.Dialog;<br />import android.graphics.Color;<br />import android.graphics.drawable.ColorDrawable;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.view.Window;<br />import android.view.WindowManager;<br />import android.widget.ImageView;<br /><br />public class MainActivity extends Activity {<br /><br /> private ImageView mOverLayImage;<br /> <br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> <br /> final Dialog overlayInfo = new Dialog(MainActivity.this);<br /> overlayInfo.requestWindowFeature(Window.FEATURE_NO_TITLE);<br /> overlayInfo.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));<br /> overlayInfo.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);<br /> overlayInfo.setContentView(R.layout.overlay_view);<br /> overlayInfo.show();<br /> <br /> mOverLayImage = (ImageView) overlayInfo.findViewById(R.id.over_lay_image);<br /> mOverLayImage.setOnClickListener(new OnClickListener() {<br /> <br /> @Override<br /> public void onClick(View v) { <br /> overlayInfo.cancel();<br /> }<br /> }); <br /> }<br />}</span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Output :</span></u></span></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgffng2fBFviSP8GJgK2aEDhUgmHExR0PwOjid3_xKZ1wGVhm954TCe_V2GY2qvLL_DxSpwDy6TJOWJEoV08gd_yyCcEMjUW6vFZ9dgq_ngHbqT0i-q3FMiPOc6gX9I92qrxULJXWqW8mg/s1600/showcase1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgffng2fBFviSP8GJgK2aEDhUgmHExR0PwOjid3_xKZ1wGVhm954TCe_V2GY2qvLL_DxSpwDy6TJOWJEoV08gd_yyCcEMjUW6vFZ9dgq_ngHbqT0i-q3FMiPOc6gX9I92qrxULJXWqW8mg/s400/showcase1.png" width="266" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0oTQbR16ulO87oKwLF2sH8Vrle3BRcTkv2ws0wFJsjqDCOzN5hfRBV4vB-W_7bTGtFXSMwCpp0jzSQn6VX8Gk03F1V7C-gl4AiTsKorJG_a2UhLuq3Mw65KsSwmTKPsQJr93axwSXemM/s1600/showcase2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0oTQbR16ulO87oKwLF2sH8Vrle3BRcTkv2ws0wFJsjqDCOzN5hfRBV4vB-W_7bTGtFXSMwCpp0jzSQn6VX8Gk03F1V7C-gl4AiTsKorJG_a2UhLuq3Mw65KsSwmTKPsQJr93axwSXemM/s400/showcase2.png" width="266" /></a></div>
<br />
Source Code: <a href="http://www.ziddu.com/download/22238323/showcaseview-demo-example.zip.html">Download this Example Here</a><br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-658265540397047133.post-60843892630490233352013-05-22T21:15:00.000+05:302013-05-22T21:15:02.718+05:30Confirm Password Validation using Saripaar Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<span style="color: red;"><b><span style="font-size: large;"><u>Download Saripaar <span style="font-size: large;">Libr<span style="font-size: large;">ary from git<span style="font-size: large;">Hub </span></span></span></u></span></b></span></div>
<div style="text-align: left;">
<span style="color: red;"><br /></span></div>
<div style="text-align: left;">
<span style="color: red;"><span style="color: #3d85c6;"><a href="https://github.com/ragunathjawahar/android-saripaar"><span style="font-size: small;"> url : https://github.com/ragunathjawahar/android-saripaar</span></a></span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="color: red;"><span style="color: #3d85c6;"><span style="font-size: small;"><span style="font-size: small;">Add Sarip<span style="font-size: small;">aar </span>Library Project<span style="font-size: small;"> to you<span style="font-size: small;">r project<span style="font-size: small;">, (<a href="http://rajeshvijayakumar.blogspot.in/2013/01/how-to-add-actionbarsherlock-library-to.html">same <span style="font-size: small;">method <span style="font-size: small;">of adding actionbarsherlock to your project</span></span>)</a></span></span></span></span></span></span></span></div>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">activity_main.xml</span></u></span></h3>
<span style="color: #3d85c6;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <TextView<br /> android:id="@+id/textView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_alignParentTop="true"<br /> android:layout_marginLeft="18dp"<br /> android:layout_marginTop="42dp"<br /> android:text="Old Password"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <EditText<br /> android:id="@+id/old_passwd"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignTop="@+id/textView1"<br /> android:layout_toRightOf="@+id/textView1"<br /> android:ems="10"<br /> android:inputType="textPassword" /><br /><br /> <TextView<br /> android:id="@+id/textView2"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/textView1"<br /> android:layout_below="@+id/old_passwd"<br /> android:layout_marginTop="44dp"<br /> android:text="New Password"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <EditText<br /> android:id="@+id/new_passwd"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignBaseline="@+id/textView2"<br /> android:layout_alignBottom="@+id/textView2"<br /> android:layout_alignParentRight="true"<br /> android:layout_toRightOf="@+id/textView2"<br /> android:ems="10"<br /> android:inputType="textPassword" /><br /><br /> <TextView<br /> android:id="@+id/textView3"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/textView2"<br /> android:layout_below="@+id/new_passwd"<br /> android:layout_marginTop="42dp"<br /> android:text="Confirm"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <EditText<br /> android:id="@+id/confirm_passwd"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentRight="true"<br /> android:layout_alignTop="@+id/textView3"<br /> android:ems="10"<br /> android:inputType="textPassword" ><br /><br /> <requestFocus /><br /> </EditText><br /><br /> <Button<br /> android:id="@+id/change_password_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/textView3"<br /> android:layout_below="@+id/confirm_passwd"<br /> android:layout_marginLeft="39dp"<br /> android:layout_marginTop="55dp"<br /> android:text="Change Password" /><br /><br /></RelativeLayout></span><br />
<h3 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u>ConfirmPasswordActivity.java</u></span></span></h3>
<br />
<br /><span style="color: #3d85c6;">package com.rajeshvijayakumar.confirmpassword;<br /><br />import android.app.Activity;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.EditText;<br />import android.widget.Toast;<br /><br />import com.mobsandgeeks.saripaar.Rule;<br />import com.mobsandgeeks.saripaar.Validator;<br />import com.mobsandgeeks.saripaar.Validator.ValidationListener;<br />import com.mobsandgeeks.saripaar.annotation.ConfirmPassword;<br />import com.mobsandgeeks.saripaar.annotation.Password;<br />import com.mobsandgeeks.saripaar.annotation.Required;<br />import com.mobsandgeeks.saripaar.annotation.TextRule;<br /><br />public class ConfirmPasswordActivity extends Activity implements<br /> ValidationListener {<br /><br /> @Required(order = 1)<br /> @TextRule(order = 2, minLength = 6, message = "Enter a New Password Correctly")<br /> private EditText mOldPasswordEditText;<br /><br /> @Required(order = 3)<br /> @Password(order = 4, message = "Enter a Valid Password")<br /> @TextRule(order = 5, minLength = 6, message = "Enter a New Password Correctly")<br /> private EditText mNewPasswordEditText;<br /><br /> @Required(order = 6)<br /> @ConfirmPassword(order = 7, message = "Repeat a New Password Correctly")<br /> private EditText mConfirmNewPasswordEditText;<br /><br /> private Button mChangePasswordButton;<br /> private Validator mChangePasswordValidator;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mOldPasswordEditText = (EditText) findViewById(R.id.old_passwd);<br /> mNewPasswordEditText = (EditText) findViewById(R.id.new_passwd);<br /> mConfirmNewPasswordEditText = (EditText) findViewById(R.id.confirm_passwd);<br /><br /> mChangePasswordButton = (Button) findViewById(R.id.change_password_button);<br /> mChangePasswordButton.setOnClickListener(new OnClickListener() {<br /><br /> @Override<br /> public void onClick(View v) {<br /> mChangePasswordValidator.validate();<br /> }<br /> });<br /><br /> mChangePasswordValidator = new Validator(this);<br /> mChangePasswordValidator.setValidationListener(this);<br /><br /> }<br /><br /> @Override<br /> public void onFailure(View failedView, Rule<?> failedRule) {<br /><br /> String message = failedRule.getFailureMessage();<br /> if (failedView instanceof EditText) {<br /> failedView.requestFocus();<br /> ((EditText) failedView).setError(message);<br /> } else {<br /> Toast.makeText(this, "Password Not Changed", Toast.LENGTH_SHORT)<br /> .show();<br /> }<br /> }<br /><br /> @Override<br /> public void onSuccess() {<br /> Toast.makeText(this, "SuccessFully Password Changed",<br /> Toast.LENGTH_SHORT).show();<br /> }<br /><br /> @Override<br /> public void onValidationCancelled() {<br /> // TODO Auto-generated method stub<br /><br /> }<br /><br /> @Override<br /> public void preValidation() {<br /> // TODO Auto-generated method stub<br /><br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Output :</span></u></span></h3>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzqzbzi1JbR7SGmCKVXdblPrTcGcf06fjLHwQRqr98IhusnNPVNZNQEqdLyPtuLc9X4Nzp1CU2ViPv9gVoqLkCUE8sT48VcpMw2b7bSFHIwkevOJl-ZSrUitj499QKOCZSdcJ-stDUYY/s1600/pass1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzqzbzi1JbR7SGmCKVXdblPrTcGcf06fjLHwQRqr98IhusnNPVNZNQEqdLyPtuLc9X4Nzp1CU2ViPv9gVoqLkCUE8sT48VcpMw2b7bSFHIwkevOJl-ZSrUitj499QKOCZSdcJ-stDUYY/s400/pass1.png" width="266" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguk3K4U0aaqCwI99JSEeg97u68WDsn6rwxprtbUT-vFWCOaToGWnaSbcPurFK7qvBMVMFDkKuq88fncjuvyrOphSSW1ccFrC1lg5Fg-dbKbLtLgih4ir2tLhKWoWmnsSBaFB16YEerzgE/s1600/pass2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguk3K4U0aaqCwI99JSEeg97u68WDsn6rwxprtbUT-vFWCOaToGWnaSbcPurFK7qvBMVMFDkKuq88fncjuvyrOphSSW1ccFrC1lg5Fg-dbKbLtLgih4ir2tLhKWoWmnsSBaFB16YEerzgE/s400/pass2.png" width="266" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaRfvwiYJxf1zRmNCqaylsgEo23-gCTs4Iur2Fxo2ddsI3lfx6Q_lvVze7I9b3Sw63BiHCnh-A_uqm4JCOlOzMcyPttVHZxCcgQk0s65uu3KHQhWv7-QEoD7VIghVyTlPsXVw1CG1DNlI/s1600/pass3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaRfvwiYJxf1zRmNCqaylsgEo23-gCTs4Iur2Fxo2ddsI3lfx6Q_lvVze7I9b3Sw63BiHCnh-A_uqm4JCOlOzMcyPttVHZxCcgQk0s65uu3KHQhWv7-QEoD7VIghVyTlPsXVw1CG1DNlI/s400/pass3.png" width="266" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7t_eaPYPthcoUBpjhkMFX0-EP19ZHbVnH4uCPMEThs6wzuUTfZN-K4h4XF7fCfLZlx6CSo8uQPCbPJGwkDXQfEujZcxHW-rRLAyb0tbph0iSDii2WNzL9-ntliK9Eib3Y9gKp8bOfjqY/s1600/pass4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7t_eaPYPthcoUBpjhkMFX0-EP19ZHbVnH4uCPMEThs6wzuUTfZN-K4h4XF7fCfLZlx6CSo8uQPCbPJGwkDXQfEujZcxHW-rRLAyb0tbph0iSDii2WNzL9-ntliK9Eib3Y9gKp8bOfjqY/s400/pass4.png" width="258" /></a></div>
<br />
<br />
<span style="color: #3d85c6;">Source Code : </span><a href="http://www.ziddu.com/download/22237258/password-validation-example.zip.html">Download this Example Here</a><br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-658265540397047133.post-48792043166444132242013-04-28T22:55:00.000+05:302013-05-02T22:13:19.927+05:30Name, Phone Number, Email Validation using Saripaar Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<span style="color: red;"><b><span style="font-size: large;"><u>Download Saripaar <span style="font-size: large;">Libr<span style="font-size: large;">ary from git<span style="font-size: large;">Hub </span></span></span></u></span></b></span></div>
<div style="text-align: left;">
<span style="color: red;"><br /></span></div>
<div style="text-align: left;">
<span style="color: red;"><span style="color: #3d85c6;"><a href="https://github.com/ragunathjawahar/android-saripaar"><span style="font-size: small;"> url : https://github.com/ragunathjawahar/android-saripaar</span></a></span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="color: red;"><span style="color: #3d85c6;"><span style="font-size: small;"><span style="font-size: small;">Add Sarip<span style="font-size: small;">aar </span>Library Project<span style="font-size: small;"> to you<span style="font-size: small;">r project<span style="font-size: small;">, (<a href="http://rajeshvijayakumar.blogspot.in/2013/01/how-to-add-actionbarsherlock-library-to.html">same <span style="font-size: small;">method <span style="font-size: small;">of adding actionbarsherlock to your project</span></span>)</a></span></span></span></span></span></span></span></div>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">main.xml</span></u></span></h3>
<br />
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?><br /> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <TextView<br /> android:id="@+id/textView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_alignParentTop="true"<br /> android:layout_marginLeft="18dp"<br /> android:layout_marginTop="30dp"<br /> android:text="Name"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <EditText<br /> android:id="@+id/name_add_edit_text"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentRight="true"<br /> android:layout_alignTop="@+id/textView1"<br /> android:ems="10" /><br /><br /> <TextView<br /> android:id="@+id/textView2"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/textView1"<br /> android:layout_below="@id/name_add_edit_text"<br /> android:layout_marginTop="60dp"<br /> android:text="IpAddress"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <EditText<br /> android:id="@+id/ipaddress_edit_text"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignBaseline="@+id/textView2"<br /> android:layout_alignBottom="@+id/textView2"<br /> android:layout_toRightOf="@+id/textView2"<br /> android:ems="10" /><br /><br /> <CheckBox<br /> android:id="@+id/terms_conditions_checkbox"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/textView2"<br /> android:layout_below="@id/ipaddress_edit_text"<br /> android:layout_marginTop="56dp"<br /> android:text="I accept terms and conditions" /><br /><br /> <Button<br /> android:id="@+id/add_edit_done_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@id/terms_conditions_checkbox"<br /> android:layout_centerHorizontal="true"<br /> android:layout_marginTop="27dp"<br /> android:text="SAVE" /><br /><br /> </RelativeLayout></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">PhoneNumberEmailValidationActivity.java</span></u></span></h3>
<span style="color: #0b5394;">package com.rajeshvijayakumar.saripaar;<br /><br />import com.mobsandgeeks.saripaar.Rule;<br />import com.mobsandgeeks.saripaar.Validator;<br />import com.mobsandgeeks.saripaar.Validator.ValidationListener;<br />import com.mobsandgeeks.saripaar.annotation.Email;<br />import com.mobsandgeeks.saripaar.annotation.NumberRule;<br />import com.mobsandgeeks.saripaar.annotation.NumberRule.NumberType;<br />import com.mobsandgeeks.saripaar.annotation.Required;<br />import com.mobsandgeeks.saripaar.annotation.TextRule;<br /><br />public class PhoneNumberEmailValidationActivity extends Activity implements ValidationListener {<br /><br /> @Required(order = 1)<br /> @TextRule(order = 2, minLength = 5, maxLength = 35, trim = true, message = "Enter Valid Full Name")<br /> private EditText mNameEditText;<br /><br /> @Required(order = 3)<br /> @Email(order = 4, message = "Please Check and Enter a valid Email Address")<br /> private EditText mEmailEditText;<br /><br /> @Required(order = 5)<br /> @NumberRule(order = 6, message = "Enter Phone Number in Numeric", type = NumberType.LONG)<br /> @TextRule(order = 7, message = "Enter valid Phone Number", minLength = 10, maxLength = 14)<br /> private EditText mPhoneNumberEditText;<br /><br /> private Button mAddEditButton;<br /> private Validator mAddEditValidator;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /><br /> mNameEditText = (EditText) findViewById(R.id.name);<br /> mEmailEditText = (EditText) findViewById(R.id.email_address);<br /> mPhoneNumberEditText = (EditText) findViewById(R.id.phone_number);<br /> mAddEditButton = (Button) findViewById(R.id.validate_button);<br /><br /> mAddEditButton.setOnClickListener(new OnClickListener() {<br /><br /> @Override<br /> public void onClick(View v) {<br /> ((com.mobsandgeeks.saripaar.Validator) mAddEditValidator).validate();<br /> }<br /> });<br /> mAddEditValidator = new Validator(this);<br /> mAddEditValidator.setValidationListener(this);<br /><br /> }<br /><br /> @Override<br /> public void onFailure(View failedView, Rule<?> failedRule) {<br /><br /> String message = failedRule.getFailureMessage();<br /> if (failedView instanceof EditText) {<br /> Toast.makeText(this, message,<br /> Toast.LENGTH_SHORT).show();<br /> } else {<br /> Toast.makeText(this, "Record Not Saved", Toast.LENGTH_SHORT).show();<br /> }<br /> }<br /><br /> @Override<br /> public void onSuccess() {<br /> Toast.makeText(this, "Record Saved Successfully", Toast.LENGTH_SHORT).show();<br /> }<br /><br /> @Override<br /> public void onValidationCancelled() {<br /> }<br /><br /> @Override<br /> public void preValidation() {<br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Output: </span></u></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm-xSSkeWv3wkNEFqsukXZxGRhzuu1SZTFDG09KwJneSMSCJzzRbOoUrSGV9_t_eIyzt6g7wlmgzsSmWUznH-7zogusfNCUeFC84OE4LShXCGbgYPnEU_PoG_YfWY2KR3gjd2yVDwAlPM/s1600/vali1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm-xSSkeWv3wkNEFqsukXZxGRhzuu1SZTFDG09KwJneSMSCJzzRbOoUrSGV9_t_eIyzt6g7wlmgzsSmWUznH-7zogusfNCUeFC84OE4LShXCGbgYPnEU_PoG_YfWY2KR3gjd2yVDwAlPM/s320/vali1.png" width="213" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOjGwiQ6GXgd01ZJpWmgSx394GqDvS6TYnGTdm9fHuHbT0d6FcrH-I6EOFZ1Ui0QXXHAS4Qv0jUQmAMJKJbTL8QgjEvhHtX34t8gurN9sjDoef8FxgyJtNllHnaPzfwTXkrHtZBISdQBs/s1600/vali2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOjGwiQ6GXgd01ZJpWmgSx394GqDvS6TYnGTdm9fHuHbT0d6FcrH-I6EOFZ1Ui0QXXHAS4Qv0jUQmAMJKJbTL8QgjEvhHtX34t8gurN9sjDoef8FxgyJtNllHnaPzfwTXkrHtZBISdQBs/s320/vali2.png" width="210" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrhJrmqU5ZMLngJ1HFEJW8cUQOni8uJQB1zlzExKYygDQNSNVH1IvsFlUuDQm_sY3zHTamGzjHfBvfCFkm99pr6_Z_CdmSRw-LdSUpuxkbIbLvEeqO7XKE0j8HZ5ahHJUMgjW-LY_NKF4/s1600/vali3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrhJrmqU5ZMLngJ1HFEJW8cUQOni8uJQB1zlzExKYygDQNSNVH1IvsFlUuDQm_sY3zHTamGzjHfBvfCFkm99pr6_Z_CdmSRw-LdSUpuxkbIbLvEeqO7XKE0j8HZ5ahHJUMgjW-LY_NKF4/s320/vali3.png" width="208" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh04srQJDQh6zRKJcisgjNBIS6_lPw7tvo22NWg8sDo2cH7XulOfnD4ir7MUA0RuQmJF_uqFseTxa-6-4DX3vJqJR6yPmyCzkcXZ9jrRi49zV5XD4V7KagtuiiUxKQB-lxuiiqJw5OG3qI/s1600/vali4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh04srQJDQh6zRKJcisgjNBIS6_lPw7tvo22NWg8sDo2cH7XulOfnD4ir7MUA0RuQmJF_uqFseTxa-6-4DX3vJqJR6yPmyCzkcXZ9jrRi49zV5XD4V7KagtuiiUxKQB-lxuiiqJw5OG3qI/s320/vali4.png" width="208" /></a></div>
<br />
<br />
<span style="color: #0b5394;">Source Code :</span> <a href="http://www.ziddu.com/download/22098248/saripaar-demo-example.zip.html">Download Example with Library</a><br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-658265540397047133.post-52608993666133514692013-04-21T17:15:00.000+05:302013-04-28T21:17:28.122+05:30Alert Dialog : Dialog with Item List Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">activity_main.xml</span></u></span></h3>
<br />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:layout_width="fill_parent"<br />
android:layout_height="fill_parent" ><br />
<br />
<Button<br />
android:id="@+id/done_button"<br />
android:layout_width="wrap_content"<br />
android:layout_height="wrap_content"<br />
android:text="DONE" /><br />
<br />
</RelativeLayout><br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">MainActivity.java</span></u></span></h3>
package com.example.alertdialogex;<br />
<br />
import android.app.Activity;<br />
import android.app.AlertDialog;<br />
import android.content.DialogInterface;<br />
import android.os.Bundle;<br />
import android.view.View;<br />
import android.view.View.OnClickListener;<br />
import android.widget.Button;<br />
<br />
public class MainActivity extends Activity implements OnClickListener {<br />
<br />
private Button mDoneButton;<br />
<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
mDoneButton = (Button) findViewById(R.id.done_button);<br />
mDoneButton.setOnClickListener(this);<br />
}<br />
<br />
@Override<br />
public void onClick(View v) {<br />
<br />
final CharSequence[] items = {<br />
"Rajesh", "Mahesh", "Vijayakumar"<br />
};<br />
<br />
AlertDialog.Builder builder = new AlertDialog.Builder(this);<br />
builder.setTitle("Make your selection");<br />
builder.setItems(items, new DialogInterface.OnClickListener() {<br />
public void onClick(DialogInterface dialog, int item) {<br />
// Do something with the selection<br />
mDoneButton.setText(items[item]);<br />
}<br />
});<br />
AlertDialog alert = builder.create();<br />
alert.show();<br />
<br />
}<br />
}<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Output :</span></u></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQolT_2Q0HwynJhcAfnVdH_Iw9ooeRGLiYGbODBs0NgI4tz9Lubbktoo2SdkXIDmLq6v6s4fss0R7HRwuaZBB35bUg4P-sEE-JJRCz46_Kq_QMKey-jmDnslI-Hn4tEJR2E8ic-DkbhRQ/s1600/alert1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQolT_2Q0HwynJhcAfnVdH_Iw9ooeRGLiYGbODBs0NgI4tz9Lubbktoo2SdkXIDmLq6v6s4fss0R7HRwuaZBB35bUg4P-sEE-JJRCz46_Kq_QMKey-jmDnslI-Hn4tEJR2E8ic-DkbhRQ/s640/alert1.png" width="360" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyBu_9TO2KYXIfjzr5fgR4XyaBwlEdyxyq8tHdeaSqeMZwI5PeLy-3N_zupG1mEWDZ-zLPJ1PbieejmvrHpjJgmbhNnwy_7wRwtFMSZmsgU1cln07-3lPt7UxGg1zrXOVYC3nCBSn2oEg/s1600/alert2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyBu_9TO2KYXIfjzr5fgR4XyaBwlEdyxyq8tHdeaSqeMZwI5PeLy-3N_zupG1mEWDZ-zLPJ1PbieejmvrHpjJgmbhNnwy_7wRwtFMSZmsgU1cln07-3lPt7UxGg1zrXOVYC3nCBSn2oEg/s640/alert2.png" width="360" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSmDYvr79xESvJ9kICwPEBJEZ0kH30ja91ePMWR0cwtuvnRB0viASbEHex1CT5FXx87gr5OyOoRXy99jCM0LQa5GPyOZVHVinD-wQEvEs6597tuewnEWJhE3VJnOIunt1wnbLP-IkWNJ0/s1600/alert3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSmDYvr79xESvJ9kICwPEBJEZ0kH30ja91ePMWR0cwtuvnRB0viASbEHex1CT5FXx87gr5OyOoRXy99jCM0LQa5GPyOZVHVinD-wQEvEs6597tuewnEWJhE3VJnOIunt1wnbLP-IkWNJ0/s640/alert3.png" width="360" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCOEDx0swH_1LazVeOZY32qw583ti7l9ufJwLYK88vCOe7tgkTuY7-OkZbXsSGgvex5kjzVuOJ5ACfwdA_B5HWhH38mUhefKJYji2Na1G9YNovmfdD5WhPK50vqn8NNtE_fK4KFpym6uM/s1600/alert4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCOEDx0swH_1LazVeOZY32qw583ti7l9ufJwLYK88vCOe7tgkTuY7-OkZbXsSGgvex5kjzVuOJ5ACfwdA_B5HWhH38mUhefKJYji2Na1G9YNovmfdD5WhPK50vqn8NNtE_fK4KFpym6uM/s640/alert4.png" width="360" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #073763;">Source Code : </span><a href="http://www.ziddu.com/download/22054942/alert-dialog-with-list-items.zip.html">Download this Example Here </a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-658265540397047133.post-44185625523146109182013-04-21T16:58:00.000+05:302013-04-28T21:16:44.915+05:30Action Bar Sherlock : Action Bar with Custom Title View Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<b><span style="font-weight: normal;"><span style="color: red;"><span style="font-size: large;"><span style="font-size: x-small;"><span style="color: red;"> </span></span></span></span></span></b></h3>
<h3 style="text-align: left;">
<span style="font-size: small;"><span style="font-weight: normal;"><span style="color: red;"><span style="color: red;">Add ActionBarSherlock Library Project to your Application Project, Here is a Link for this</span></span></span></span></h3>
<div style="text-align: left;">
<span style="font-size: x-small;"><span style="color: red;"><span style="font-size: x-small;"><a href="http://rajeshvijayakumar.blogspot.in/2013/01/how-to-add-actionbarsherlock-library-to.html">http://rajeshvijayakumar.blogspot.in/2013/01/how-to-add-actionbarsherlock-library-to.html</a> </span></span></span></div>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">activity_main.xml</span></u></span></h3>
<br />
<span style="color: #073763;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <TextView<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_centerHorizontal="true"<br /> android:layout_centerVertical="true"<br /> android:text="@string/hello_world" /><br /><br /></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">custom_action_layout.xml</span></u></span></h3>
<br />
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:background="#86898a"<br /> android:gravity="center_vertical" ><br /><br /> <TextView<br /> android:id="@+id/title_text"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:layout_marginLeft="10dp"<br /> android:layout_marginTop="10dp"<br /> android:layout_marginBottom="10dp"<br /> android:text="My Title"<br /> android:textColor="#ffffff"<br /> android:textSize="20sp"<br /> android:textStyle="bold" /><br /><br /></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">MainActivity.java</span></u></span></h3>
<span style="color: #073763;">package com.rajeshvijayakumar.customtitle;<br /><br />import com.actionbarsherlock.app.ActionBar;<br />import com.actionbarsherlock.app.SherlockActivity;<br /><br />public class MainActivity extends SherlockActivity {<br /><br /> // Action bar<br /> private ActionBar mActionBar;<br /> private LayoutInflater mInflater;<br /> private View mCustomView;<br /> private TextView mTitleTextView;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> initActionBar();<br /> }<br /><br /> private void initActionBar() {<br /> mActionBar = getSupportActionBar();<br /> mActionBar.setDisplayShowHomeEnabled(false);<br /> mActionBar.setDisplayShowTitleEnabled(false);<br /> mInflater = LayoutInflater.from(this);<br /> mCustomView = mInflater.inflate(R.layout.custom_action_layout, null);<br /> mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);<br /> mTitleTextView.setText("My Own Title");<br /> mActionBar.setCustomView(mCustomView);<br /> mActionBar.setDisplayShowCustomEnabled(true);<br /> // mActionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.at_header_bg));<br /> }<br />}</span><br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-weight: normal;"><span style="font-size: large;">Output :</span></span></u></span></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifHT3eLY-QeoiVI1paeXhR-YGqD_2OnIW27fTxNhdvyEAsTj1_Xa-WKdh0M8X7h6cKvZ_SHyQTr8r86wjdtaPKJkx_7R9zRhYI4UlzX3G5YH34wPn2M4AlJWX9L-7CQ6ZKp54MXRsnQJk/s1600/cus1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifHT3eLY-QeoiVI1paeXhR-YGqD_2OnIW27fTxNhdvyEAsTj1_Xa-WKdh0M8X7h6cKvZ_SHyQTr8r86wjdtaPKJkx_7R9zRhYI4UlzX3G5YH34wPn2M4AlJWX9L-7CQ6ZKp54MXRsnQJk/s640/cus1.png" width="360" /> </a> </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #073763;">Source Code :</span><a href="http://www.ziddu.com/download/22054891/CustomTitleforActionBarwithlib.zip.html"> Download this Example Here </a></div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-92005591249664140192013-04-14T22:18:00.001+05:302013-05-01T21:20:55.995+05:30Xml Pull Parser Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><span style="font-size: large;"><u><b>rss_feed_view.xml</b></u></span></span></h3>
<span style="color: #0b5394;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</span><br />
<span style="color: #0b5394;"> xmlns:tools="http://schemas.android.com/tools"</span><br />
<span style="color: #0b5394;"> android:layout_width="fill_parent"</span><br />
<span style="color: #0b5394;"> android:layout_height="fill_parent" ></span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> <ListView</span><br />
<span style="color: #0b5394;"> android:id="@+id/rss_list_view"</span><br />
<span style="color: #0b5394;"> android:layout_width="fill_parent"</span><br />
<span style="color: #0b5394;"> android:layout_height="fill_parent" /></span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<u><span style="font-size: large;"><span style="color: red;">rss_list_item.xml</span></span></u></h3>
<br />
<span style="color: #0b5394;"><?xml version="1.0" encoding="utf-8"?></span><br />
<span style="color: #0b5394;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</span><br />
<span style="color: #0b5394;"> android:layout_width="fill_parent"</span><br />
<span style="color: #0b5394;"> android:layout_height="fill_parent" ></span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> <TextView</span><br />
<span style="color: #0b5394;"> android:id="@+id/rss_title_view"</span><br />
<span style="color: #0b5394;"> android:layout_width="wrap_content"</span><br />
<span style="color: #0b5394;"> android:layout_height="wrap_content"</span><br />
<span style="color: #0b5394;"> android:layout_alignParentLeft="true"</span><br />
<span style="color: #0b5394;"> android:layout_alignParentTop="true"</span><br />
<span style="color: #0b5394;"> android:layout_marginLeft="17dp"</span><br />
<span style="color: #0b5394;"> android:layout_marginTop="14dp"</span><br />
<span style="color: #0b5394;"> android:text="NDTV"</span><br />
<span style="color: #0b5394;"> android:textAppearance="?android:attr/textAppearanceMedium"</span><br />
<span style="color: #0b5394;"> android:textColor="@android:color/black" /></span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<u><span style="color: red;"><span style="font-size: large;">RSSFeed.java</span></span></u></h3>
<div style="text-align: left;">
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;">public class RSSFeed implements Serializable {</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private String title;</span><br />
<span style="color: #0b5394;"> private String link;</span><br />
<span style="color: #0b5394;"> private String description;</span><br />
<span style="color: #0b5394;"> private String category;</span><br />
<span style="color: #0b5394;"> private String pubDate;</span><br />
<span style="color: #0b5394;"> private String guid;</span><br />
<span style="color: #0b5394;"> private String feedburnerOrigLink;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public RSSFeed() {</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public RSSFeed(String title, String link, String description, String category, String pubDate,</span><br />
<span style="color: #0b5394;"> String guid, String feedburnerOrigLink) {</span><br />
<span style="color: #0b5394;"> this.title = title;</span><br />
<span style="color: #0b5394;"> this.link = link;</span><br />
<span style="color: #0b5394;"> this.description = description;</span><br />
<span style="color: #0b5394;"> this.category = category;</span><br />
<span style="color: #0b5394;"> this.pubDate = pubDate;</span><br />
<span style="color: #0b5394;"> this.guid = guid;</span><br />
<span style="color: #0b5394;"> this.feedburnerOrigLink = feedburnerOrigLink;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getTitle() {</span><br />
<span style="color: #0b5394;"> return title;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getLink() {</span><br />
<span style="color: #0b5394;"> return link;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getDescription() {</span><br />
<span style="color: #0b5394;"> return description;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getCategory() {</span><br />
<span style="color: #0b5394;"> return category;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getPubDate() {</span><br />
<span style="color: #0b5394;"> return pubDate;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getGuid() {</span><br />
<span style="color: #0b5394;"> return guid;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public String getFeedburnerOrigLink() {</span><br />
<span style="color: #0b5394;"> return feedburnerOrigLink;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setTitle(String title) {</span><br />
<span style="color: #0b5394;"> this.title = title;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setLink(String link) {</span><br />
<span style="color: #0b5394;"> this.link = link;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setDescription(String description) {</span><br />
<span style="color: #0b5394;"> this.description = description;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setCategory(String category) {</span><br />
<span style="color: #0b5394;"> this.category = category;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setPubDate(String pubDate) {</span><br />
<span style="color: #0b5394;"> this.pubDate = pubDate;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setGuid(String guid) {</span><br />
<span style="color: #0b5394;"> this.guid = guid;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public void setFeedburnerOrigLink(String feedburnerOrigLink) {</span><br />
<span style="color: #0b5394;"> this.feedburnerOrigLink = feedburnerOrigLink;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;">}</span></div>
<div style="text-align: left;">
<b><br /></b></div>
<h3 style="text-align: left;">
<span style="color: red;"><span style="font-size: large;"><u><span style="font-weight: normal;">NewsFeedParser.java</span></u></span></span></h3>
<div style="text-align: left;">
<span style="color: #0b5394;">import com.rajeshvijayakumar.model.RSSFeed;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;">public class NewsFeedParser {</span><br />
<span style="color: #0b5394;"> private InputStream urlStream;</span><br />
<span style="color: #0b5394;"> private XmlPullParserFactory factory;</span><br />
<span style="color: #0b5394;"> private XmlPullParser parser;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private List<RSSFeed> rssFeedList;</span><br />
<span style="color: #0b5394;"> private RSSFeed rssFeed;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private String urlString;</span><br />
<span style="color: #0b5394;"> private String tagName;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private String title;</span><br />
<span style="color: #0b5394;"> private String link;</span><br />
<span style="color: #0b5394;"> private String description;</span><br />
<span style="color: #0b5394;"> private String category;</span><br />
<span style="color: #0b5394;"> private String pubDate;</span><br />
<span style="color: #0b5394;"> private String guid;</span><br />
<span style="color: #0b5394;"> private String feedburner;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public static final String ITEM = "item";</span><br />
<span style="color: #0b5394;"> public static final String CHANNEL = "channel";</span><br />
<span style="color: #0b5394;"> </span><br />
<span style="color: #0b5394;"> public static final String TITLE = "title";</span><br />
<span style="color: #0b5394;"> public static final String LINK = "link";</span><br />
<span style="color: #0b5394;"> public static final String DESCRIPTION = "description";</span><br />
<span style="color: #0b5394;"> public static final String CATEGORY = "category";</span><br />
<span style="color: #0b5394;"> public static final String PUBLISHEDDATE = "pubDate";</span><br />
<span style="color: #0b5394;"> public static final String GUID = "guid";</span><br />
<span style="color: #0b5394;"> public static final String FEEDBURNERORIGLINK = "feedburner:origLink";</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> </span><br />
<span style="color: #0b5394;"> public NewsFeedParser(String urlString) {</span><br />
<span style="color: #0b5394;"> this.urlString = urlString;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public static InputStream downloadUrl(String urlString) throws IOException {</span><br />
<span style="color: #0b5394;"> URL url = new URL(urlString);</span><br />
<span style="color: #0b5394;"> HttpURLConnection conn = (HttpURLConnection) url.openConnection();</span><br />
<span style="color: #0b5394;"> conn.setRequestMethod("GET");</span><br />
<span style="color: #0b5394;"> conn.setDoInput(true);</span><br />
<span style="color: #0b5394;"> conn.connect();</span><br />
<span style="color: #0b5394;"> InputStream stream = conn.getInputStream();</span><br />
<span style="color: #0b5394;"> return stream;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> </span><br />
<span style="color: #0b5394;"> public List<RSSFeed> parse() {</span><br />
<span style="color: #0b5394;"> try {</span><br />
<span style="color: #0b5394;"> int count = 0;</span><br />
<span style="color: #0b5394;"> factory = XmlPullParserFactory.newInstance();</span><br />
<span style="color: #0b5394;"> parser = factory.newPullParser();</span><br />
<span style="color: #0b5394;"> urlStream = downloadUrl(urlString);</span><br />
<span style="color: #0b5394;"> parser.setInput(urlStream, null);</span><br />
<span style="color: #0b5394;"> int eventType = parser.getEventType();</span><br />
<span style="color: #0b5394;"> boolean done = false;</span><br />
<span style="color: #0b5394;"> rssFeed = new RSSFeed();</span><br />
<span style="color: #0b5394;"> rssFeedList = new ArrayList<RSSFeed>();</span><br />
<span style="color: #0b5394;"> while (eventType != XmlPullParser.END_DOCUMENT && !done) {</span><br />
<span style="color: #0b5394;"> tagName = parser.getName();</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> switch (eventType) {</span><br />
<span style="color: #0b5394;"> case XmlPullParser.START_DOCUMENT:</span><br />
<span style="color: #0b5394;"> break;</span><br />
<span style="color: #0b5394;"> case XmlPullParser.START_TAG:</span><br />
<span style="color: #0b5394;"> if (tagName.equals(ITEM)) {</span><br />
<span style="color: #0b5394;"> rssFeed = new RSSFeed();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(TITLE)) {</span><br />
<span style="color: #0b5394;"> title = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(LINK)) {</span><br />
<span style="color: #0b5394;"> link = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(DESCRIPTION)) {</span><br />
<span style="color: #0b5394;"> description = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(CATEGORY)) {</span><br />
<span style="color: #0b5394;"> category = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(PUBLISHEDDATE)) {</span><br />
<span style="color: #0b5394;"> pubDate = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(GUID)) {</span><br />
<span style="color: #0b5394;"> guid = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> if (tagName.equals(FEEDBURNERORIGLINK)) {</span><br />
<span style="color: #0b5394;"> feedburner = parser.nextText().toString();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> break;</span><br />
<span style="color: #0b5394;"> case XmlPullParser.END_TAG:</span><br />
<span style="color: #0b5394;"> if (tagName.equals(CHANNEL)) {</span><br />
<span style="color: #0b5394;"> done = true;</span><br />
<span style="color: #0b5394;"> } else if (tagName.equals(ITEM)) {</span><br />
<span style="color: #0b5394;"> rssFeed = new RSSFeed(title, link, description, category, pubDate, guid, feedburner);</span><br />
<span style="color: #0b5394;"> rssFeedList.add(rssFeed);</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> break;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> eventType = parser.next();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> } catch (Exception e) {</span><br />
<span style="color: #0b5394;"> e.printStackTrace();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> return rssFeedList;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;">}</span></div>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">MainActivity.java</span></u></span></h3>
<div style="text-align: left;">
</div>
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;">package com.rajeshvijayakumar.xmlpullparser;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;">import com.rajeshvijayakumar.model.RSSFeed;</span><br />
<span style="color: #0b5394;">import com.rajeshvijayakumar.parser.NewsFeedParser;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;">public class MainActivity extends Activity implements OnItemClickListener {</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private ListView mRssListView;</span><br />
<span style="color: #0b5394;"> private NewsFeedParser mNewsFeeder;</span><br />
<span style="color: #0b5394;"> private List<RSSFeed> mRssFeedList;</span><br />
<span style="color: #0b5394;"> private RssAdapter mRssAdap;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private static final String TOPSTORIES =</span><br />
<span style="color: #0b5394;"> "http://feeds.feedburner.com/NdtvNews-TopStories?format=xml";</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> protected void onCreate(Bundle savedInstanceState) {</span><br />
<span style="color: #0b5394;"> super.onCreate(savedInstanceState);</span><br />
<span style="color: #0b5394;"> setContentView(R.layout.rss_feed_view);</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> mRssListView = (ListView) findViewById(R.id.rss_list_view);</span><br />
<span style="color: #0b5394;"> mRssFeedList = new ArrayList<RSSFeed>();</span><br />
<span style="color: #0b5394;"> new DoRssFeedTask().execute(TOPSTORIES);</span><br />
<span style="color: #0b5394;"> mRssListView.setOnItemClickListener(this);</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> private class RssAdapter extends ArrayAdapter<RSSFeed> {</span><br />
<span style="color: #0b5394;"> private List<RSSFeed> rssFeedLst;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public RssAdapter(Context context, int textViewResourceId, List<RSSFeed> rssFeedLst) {</span><br />
<span style="color: #0b5394;"> super(context, textViewResourceId, rssFeedLst);</span><br />
<span style="color: #0b5394;"> this.rssFeedLst = rssFeedLst;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> public View getView(int position, View convertView, ViewGroup parent) {</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> View view = convertView;</span><br />
<span style="color: #0b5394;"> RssHolder rssHolder = null;</span><br />
<span style="color: #0b5394;"> if (convertView == null) {</span><br />
<span style="color: #0b5394;"> view = View.inflate(MainActivity.this, R.layout.rss_list_item, null);</span><br />
<span style="color: #0b5394;"> rssHolder = new RssHolder();</span><br />
<span style="color: #0b5394;"> rssHolder.rssTitleView = (TextView) view.findViewById(R.id.rss_title_view);</span><br />
<span style="color: #0b5394;"> view.setTag(rssHolder);</span><br />
<span style="color: #0b5394;"> } else {</span><br />
<span style="color: #0b5394;"> rssHolder = (RssHolder) view.getTag();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> RSSFeed rssFeed = rssFeedLst.get(position);</span><br />
<span style="color: #0b5394;"> rssHolder.rssTitleView.setText(rssFeed.getTitle());</span><br />
<span style="color: #0b5394;"> return view;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> static class RssHolder {</span><br />
<span style="color: #0b5394;"> public TextView rssTitleView;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> public class DoRssFeedTask extends AsyncTask<String, Void, List<RSSFeed>> {</span><br />
<span style="color: #0b5394;"> ProgressDialog prog;</span><br />
<span style="color: #0b5394;"> String jsonStr = null;</span><br />
<span style="color: #0b5394;"> Handler innerHandler;</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> protected void onPreExecute() {</span><br />
<span style="color: #0b5394;"> prog = new ProgressDialog(MainActivity.this);</span><br />
<span style="color: #0b5394;"> prog.setMessage("Loading....");</span><br />
<span style="color: #0b5394;"> prog.show();</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> protected List<RSSFeed> doInBackground(String... params) {</span><br />
<span style="color: #0b5394;"> for (String urlVal : params) {</span><br />
<span style="color: #0b5394;"> mNewsFeeder = new NewsFeedParser(urlVal);</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> mRssFeedList = mNewsFeeder.parse();</span><br />
<span style="color: #0b5394;"> return mRssFeedList;</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> protected void onPostExecute(List<RSSFeed> result) {</span><br />
<span style="color: #0b5394;"> prog.dismiss();</span><br />
<span style="color: #0b5394;"> runOnUiThread(new Runnable() {</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> public void run() {</span><br />
<span style="color: #0b5394;"> mRssAdap = new RssAdapter(MainActivity.this, R.layout.rss_list_item,</span><br />
<span style="color: #0b5394;"> mRssFeedList);</span><br />
<span style="color: #0b5394;"> int count = mRssAdap.getCount();</span><br />
<span style="color: #0b5394;"> if (count != 0 && mRssAdap != null) {</span><br />
<span style="color: #0b5394;"> mRssListView.setAdapter(mRssAdap);</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> });</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> protected void onProgressUpdate(Void... values) {</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;"><br /></span>
<span style="color: #0b5394;"> @Override</span><br />
<span style="color: #0b5394;"> public void onItemClick(AdapterView<?> adapterView, View v, int position, long id) {</span><br />
<span style="color: #0b5394;"> }</span><br />
<span style="color: #0b5394;">}</span><br />
<span style="color: red;"><span style="font-size: large;"><u><b>Add this Permission in your Manifest.xml file of your project</b></u></span></span><br />
<br />
<span style="color: #0b5394;"> <uses-permission android:name="android.permission.INTERNET" /><br /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /></span><br /> <br />
<h3>
<span style="font-size: large;"> <span style="color: red;"><u>Output :</u></span></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTQ-6TuVT8n7Vuqwme9J1lVEGJpMOw3p9iPKWgW_sw2j925bnZRRQohGlf2T4ZQl_LfJa_vesRiwn29PUsbAT8MVONih7ZCyAZOVHvZe6scQyZH5cRYphfdvKx86mVlPXymrBH8nZIITw/s1600/x1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTQ-6TuVT8n7Vuqwme9J1lVEGJpMOw3p9iPKWgW_sw2j925bnZRRQohGlf2T4ZQl_LfJa_vesRiwn29PUsbAT8MVONih7ZCyAZOVHvZe6scQyZH5cRYphfdvKx86mVlPXymrBH8nZIITw/s320/x1.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBXbqY2mWe7mBn57L6KE01bsfIe-N-_IMIKqA842-ZtJUihnV7AXnizjsuXN73lst_woPnwrOD1QyeoYu34g666aIUl1bq41RHknFILuN_fb5Aa9wpYDeex4VP1UTsMeyIqIatB0HDRjg/s1600/x2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBXbqY2mWe7mBn57L6KE01bsfIe-N-_IMIKqA842-ZtJUihnV7AXnizjsuXN73lst_woPnwrOD1QyeoYu34g666aIUl1bq41RHknFILuN_fb5Aa9wpYDeex4VP1UTsMeyIqIatB0HDRjg/s320/x2.png" width="180" /></a></div>
<br />
<br />
<span style="color: #073763;">Source Code :</span> <a href="http://www.ziddu.com/download/22013002/xml-pull-parser-example.zip.html">Download this Example Here</a><br />
<br />
<br /></div>
Unknownnoreply@blogger.com11tag:blogger.com,1999:blog-658265540397047133.post-19555961740656720032013-04-14T21:59:00.000+05:302013-04-28T21:16:10.965+05:30Alert Dialog Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">main.xml</span></u></span></h3>
<br />
<span style="color: #073763;"><?xml version="1.0" encoding="utf-8"?><br /><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:orientation="vertical" ><br /><br /> <Button<br /> android:id="@+id/alert_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:text="Show ALert" /><br /> <br /></LinearLayout></span><br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">AlertDialogActivity.java</span></u></span></h3>
<span style="color: #073763;">package com.rajeshvijayakumar.alertdialog;<br /><br />import android.app.Activity;<br />import android.app.AlertDialog;<br />import android.content.Context;<br />import android.content.DialogInterface;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br /><br />public class AlertDialogActivity extends Activity {<br /> private Button MButton;<br /><br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> mButton = (Button) findViewById(R.id.alert_button);<br /><br /> mButton.setOnClickListener(new OnClickListener() {<br /><br /> @Override<br /> public void onClick(View v) {<br /><br /> AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( AlertDialogActivity.this);<br /> alertDialogBuilder.setTitle("Close");<br /> alertDialogBuilder<br /> .setMessage("Click Ok to Close Application")<br /> .setCancelable(false)<br /> .setPositiveButton("Ok",<br /> new DialogInterface.OnClickListener() {<br /> public void onClick(DialogInterface dialog,<br /> int id) {<br /> finish();<br /> }<br /> })<br /> .setNegativeButton("Cancel",<br /> new DialogInterface.OnClickListener() {<br /> public void onClick(DialogInterface dialog,<br /> int id) {<br /> dialog.cancel();<br /> }<br /> });<br /> AlertDialog alertDialog = alertDialogBuilder.create();<br /> alertDialog.show();<br /> }<br /> });<br /> }<br />} </span><br />
<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">Output :</span></u></span></h3>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-7zBu_Dn0oUh_r7qjaeQAcVK_9ZO0nv-N3RWlLSa-Gt8PSgzKx9_21ZD7x38-Me_RDIasyYqEebP88jHdtV7hYHRVhvP7-kCjTbi1cWES4KiZVOU9lzzkDM-uGFPXgkXzi-ckQ2mtZQw/s1600/ad_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-7zBu_Dn0oUh_r7qjaeQAcVK_9ZO0nv-N3RWlLSa-Gt8PSgzKx9_21ZD7x38-Me_RDIasyYqEebP88jHdtV7hYHRVhvP7-kCjTbi1cWES4KiZVOU9lzzkDM-uGFPXgkXzi-ckQ2mtZQw/s320/ad_1.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEa85mMOHH2LJ1xhhdi_oR-3b_tkBkLGpWSZ4wFS4_j7jwMczUu-908fl35w0OhdUeSl73QB_K_jDvG7-Ig3SqEMSWPjU52n7Dl6uMvQ4XHCyQXGm6OGZMYMS_yvDuqrMrbtDxm28dj58/s1600/ad_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEa85mMOHH2LJ1xhhdi_oR-3b_tkBkLGpWSZ4wFS4_j7jwMczUu-908fl35w0OhdUeSl73QB_K_jDvG7-Ig3SqEMSWPjU52n7Dl6uMvQ4XHCyQXGm6OGZMYMS_yvDuqrMrbtDxm28dj58/s320/ad_2.png" width="180" /></a></div>
<br />
<br />
<br />
<br />
<span style="color: #073763;">Source Code </span>: <a href="http://www.ziddu.com/download/22012903/alert-dialog-example.zip.html">Download this Example Here</a><br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-6022027334349185262013-04-11T00:02:00.000+05:302013-04-28T21:15:30.562+05:30Alternative to Custom Adapter : Instant Adapter Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
Get Instant Adapter Library from the following Url : <a href="https://github.com/ragunathjawahar/instant-adapter">https://github.com/ragunathjawahar/instant-adapter</a> <br />
<br />
<h3 style="text-align: left;">
<b><u><span style="color: red;">Import and Add Instant library Project to your Project as shown below :</span></u></b></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIErpo_XZB5YkeUoRjoG0OKBVJwCSl07bKheNsUXhze71h1aguSdX__6e4MxOBQdDqCfn6xcsDA_GjBUJx8eCqIHdNV_d7a1U6RO705lS3AKPe8H_Tj7FLgwOAQmO7AWxormblTby74g/s1600/instant-adap-lib-img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIErpo_XZB5YkeUoRjoG0OKBVJwCSl07bKheNsUXhze71h1aguSdX__6e4MxOBQdDqCfn6xcsDA_GjBUJx8eCqIHdNV_d7a1U6RO705lS3AKPe8H_Tj7FLgwOAQmO7AWxormblTby74g/s640/instant-adap-lib-img1.png" width="640" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlQm0HHULFwzjv2NslB-1CLwhrGEBAOpwrFo-k3kyk9E2TTcs1f9LH2d35h7LksCAlrulLeDzOnIWn4Av-gtqjJXr2Lo_vsaZzfOl_LWb8VLK3LFXrriFyN23ZhyphenhyphenQVq7KqOwPziyhWz4/s1600/instant-adap-lib-img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlQm0HHULFwzjv2NslB-1CLwhrGEBAOpwrFo-k3kyk9E2TTcs1f9LH2d35h7LksCAlrulLeDzOnIWn4Av-gtqjJXr2Lo_vsaZzfOl_LWb8VLK3LFXrriFyN23ZhyphenhyphenQVq7KqOwPziyhWz4/s640/instant-adap-lib-img2.png" width="640" /></a></div>
<br />
Then use the following code :<br />
<h3 style="text-align: left;">
<span style="color: red;"><u><b></b></u></span></h3>
<h3 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u><b>In activity_main.xml</b></u></span></span></h3>
<br />
<span style="color: #0b5394;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> xmlns:tools="http://schemas.android.com/tools"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <ListView<br /> android:id="@+id/person_list_view"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" /><br /><br /></RelativeLayout></span><br />
<span style="color: #0b5394;"></span><br />
<h3 style="text-align: left;">
<span style="color: #0b5394;"><span style="font-size: large;"><b><u><span style="color: red;">In list_item.xml</span></u></b></span></span></h3>
<span style="color: #073763;"></span><br />
<span style="color: #073763;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <TextView<br /> android:id="@+id/name"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_alignParentTop="true"<br /> android:layout_marginLeft="16dp"<br /> android:layout_marginTop="14dp"<br /> android:text="Large Text"<br /> android:textAppearance="?android:attr/textAppearanceLarge" /><br /><br /> <TextView<br /> android:id="@+id/phone_no"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignTop="@id/name"<br /> android:layout_marginLeft="47dp"<br /> android:layout_toRightOf="@id/name"<br /> android:text="Small Text"<br /> android:textAppearance="?android:attr/textAppearanceSmall" /><br /><br /> <TextView<br /> android:id="@+id/email"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@id/phone_no"<br /> android:layout_below="@id/name"<br /> android:text="Small Text"<br /> android:textAppearance="?android:attr/textAppearanceSmall" /><br /><br /></RelativeLayout></span><br />
<br />
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">Create Person.java Model</span></u></b></span></h3>
<span style="color: #073763;">package com.rajeshvijayakumar.model;<br /><br />import com.mobsandgeeks.adapters.InstantText;<br />import com.rajeshvijayakumar.insta.R;<br /><br />public class Person {<br /><br /> private String name;<br /> private String phoneNo;<br /> private String emailId;<br /><br /> public Person(String name, String phoneNo, String emailId) {<br /> this.name = name;<br /> this.phoneNo = phoneNo;<br /> this.emailId = emailId;<br /> }<br /><br /> @InstantText(viewId = R.id.name)<br /> public String getName() {<br /> return name;<br /> }<br /><br /> public void setName(String name) {<br /> this.name = name;<br /> }<br /><br /> @InstantText(viewId = R.id.phone_no, formatString = "Mob : %s")<br /> public String getPhoneNo() {<br /> return phoneNo;<br /> }<br /><br /> public void setPhoneNo(String phoneNo) {<br /> this.phoneNo = phoneNo;<br /> }<br /><br /> @InstantText(viewId = R.id.email, formatString = "Email : %s")<br /> public String getEmailId() {<br /> return emailId;<br /> }<br /><br /> public void setEmailId(String emailId) {<br /> this.emailId = emailId;<br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">MainActivity.java</span></u></b></span></h3>
<span style="color: #073763;">package com.rajeshvijayakumar.insta;<br /><br />import android.app.Activity;<br />import android.os.Bundle;<br />import android.widget.ListView;<br /><br />import com.mobsandgeeks.adapters.InstantAdapter;<br />import com.rajeshvijayakumar.model.Person;<br /><br />import java.util.ArrayList;<br />import java.util.List;<br /><br />public class MainActivity extends Activity {<br /><br /> private ListView mPersonListView;<br /> private InstantAdapter mInsAdapter;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mPersonListView = (ListView) findViewById(R.id.person_list_view);<br /> mInsAdapter = new InstantAdapter<Person>(this, R.layout.list_item, Person.class, getPersons());<br /> mPersonListView.setAdapter(mInsAdapter);<br /> }<br /><br /> private List<Person> getPersons() {<br /><br /> List<Person> persons = new ArrayList<Person>();<br /> persons.add(new Person("Rajesh", "9600272370", "rajesh@gmail.com"));<br /> persons.add(new Person("Kuberan", "3224231223", "kuberan@gmail.com"));<br /> persons.add(new Person("Ramanan", "9873272323", "ramanan@gmail.com"));<br /> persons.add(new Person("Kalidasan", "9723476322", "kali@gmail.com"));<br /><br /> return persons;<br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">Output :</span></u></b></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPpKK9XrO7p6iqUTsppv752gCbeltIbe-BES9aIzMrmPka88fjXEhV5VbiH-3-bxZah3eznFCXWhSU0P83YcEl0jqPU-_jbZbByg9l-zSMmB12kx7Tpa2JO6_GO-Znn2wUpWxturaZvgs/s1600/output1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPpKK9XrO7p6iqUTsppv752gCbeltIbe-BES9aIzMrmPka88fjXEhV5VbiH-3-bxZah3eznFCXWhSU0P83YcEl0jqPU-_jbZbByg9l-zSMmB12kx7Tpa2JO6_GO-Znn2wUpWxturaZvgs/s400/output1.png" width="266" /></a></div>
<br />
<span style="color: #073763;">Source Code :</span> <a href="http://www.ziddu.com/download/21987610/instant-adapter-example-with-lib.zip.html">Download this example here</a><br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-658265540397047133.post-67214784892731325852013-04-07T18:55:00.000+05:302013-04-28T21:15:51.942+05:30Location Manager: Getting User Current Location using GPS Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">main.xml</span></u></span></h3>
<span style="color: #0b5394;"> <?xml version="1.0" encoding="utf-8"?><br /><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> android:orientation="vertical" ><br /><br /> <TextView<br /> android:id="@+id/gps_text"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:text="@string/hello" /><br /></LinearLayout></span><br />
<h4 style="text-align: left;">
</h4>
<h3 style="text-align: left;">
<span style="color: red;"><u><span style="font-size: large;">CurrentLocationActivity.java</span></u></span></h3>
<br />
package com.rajeshvijayakumar.gps;<br />
<br />
import java.io.IOException;<br />
import java.util.List;<br />
import java.util.Locale;<br />
<br />
import android.app.Activity;<br />
import android.content.Context;<br />
import android.location.Address;<br />
import android.location.Geocoder;<br />
import android.location.Location;<br />
import android.location.LocationListener;<br />
import android.location.LocationManager;<br />
import android.os.Bundle;<br />
import android.widget.TextView;<br />
import android.widget.Toast;<br />
<br />
public class CurrentLocationActivity extends Activity {<br />
<br />
/** Called when the activity is first created. */<br />
<br />
private TextView gpsLocationView;<br />
private List<Address> addresses;<br />
private String text;<br />
@Override<br />
<br />
public void onCreate(Bundle savedInstanceState) {<br />
<br />
super.onCreate(savedInstanceState);<br />
<br />
setContentView(R.layout.main);<br />
gpsLocationView=(TextView) findViewById(R.id.gps_text);<br />
/* Use the LocationManager class to obtain GPS locations */<br />
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);<br />
LocationListener mlocListener = new MyLocationListener();<br />
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);<br />
}<br />
<br />
/* Class My Location Listener */<br />
public class MyLocationListener implements LocationListener {<br />
<br />
@Override<br />
public void onLocationChanged(Location loc){<br />
loc.getLatitude();<br />
loc.getLongitude();<br />
Geocoder gcd = new Geocoder(getApplicationContext(), Locale.getDefault());<br />
try {<br />
addresses = gcd.getFromLocation(loc.getLatitude(),loc.getLongitude(), 1);<br />
} catch (IOException e) {<br />
// TODO Auto-generated catch block<br />
e.printStackTrace();<br />
}<br />
String text=(addresses!=null)?"City : "+addresses.get(0).getSubLocality()+"\n Country : "+addresses.get(0).getCountryName():"Unknown Location";<br />
<br />
String locationValue = "My current location is: "+ text;<br />
gpsLocationView.setText(locationValue);<br />
}<br />
<br />
@Override<br />
public void onProviderDisabled(String provider){<br />
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();<br />
}<br />
<br />
@Override<br />
public void onProviderEnabled(String provider){<br />
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();<br />
}<br />
<br />
@Override<br />
public void onStatusChanged(String provider, int status, Bundle extras){<br />
}<br />
}<br />
}<br />
<br />
<br />
<span style="color: #0b5394;">Source code :</span> <a href="http://www.ziddu.com/download/21965946/current-location-gps-example.zip.html">Download this example</a> </div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-658265540397047133.post-61641842948072190772013-03-20T04:51:00.002+05:302013-03-20T05:55:32.918+05:30Shared Preferences Example in Android<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: red;"><span style="font-size: large;"><b><u>activity_main.xml</u></b></span></span></h3>
<br />
<span style="color: #073763;"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent" ><br /><br /> <TextView<br /> android:id="@+id/textView1"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignParentLeft="true"<br /> android:layout_alignParentTop="true"<br /> android:layout_marginLeft="22dp"<br /> android:layout_marginTop="30dp"<br /> android:text="Enter Text"<br /> android:textAppearance="?android:attr/textAppearanceLarge" /><br /><br /> <EditText<br /> android:id="@+id/pref_editText"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/textView1"<br /> android:layout_below="@+id/textView1"<br /> android:layout_marginTop="20dp"<br /> android:ems="10" /><br /><br /> <TextView<br /> android:id="@+id/pref_textView"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@+id/textView2"<br /> android:layout_marginTop="28dp"<br /> android:layout_toRightOf="@+id/textView1"<br /> android:text="Medium Text"<br /> android:textAppearance="?android:attr/textAppearanceMedium" /><br /><br /> <Button<br /> android:id="@+id/show_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_below="@+id/pref_editText"<br /> android:layout_marginLeft="16dp"<br /> android:layout_marginTop="28dp"<br /> android:layout_toRightOf="@+id/save_button"<br /> android:text="Show" /><br /><br /> <Button<br /> android:id="@+id/save_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignBaseline="@+id/show_button"<br /> android:layout_alignBottom="@+id/show_button"<br /> android:layout_alignLeft="@+id/pref_editText"<br /> android:text="Save" /><br /><br /> <TextView<br /> android:id="@+id/textView2"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/save_button"<br /> android:layout_below="@+id/show_button"<br /> android:layout_marginTop="105dp"<br /> android:text="Preference Text"<br /> android:textAppearance="?android:attr/textAppearanceLarge" /><br /><br /> <Button<br /> android:id="@+id/delete_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_above="@+id/textView2"<br /> android:layout_marginLeft="18dp"<br /> android:layout_toRightOf="@+id/textView2"<br /> android:text="Delete" /><br /><br /> <Button<br /> android:id="@+id/clear_button"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_alignLeft="@+id/show_button"<br /> android:layout_centerVertical="true"<br /> android:text="Clear All" /><br /><br /> </RelativeLayout></span><br />
<h3 style="text-align: left;">
<b><u><span style="color: red;"></span></u></b></h3>
<h3 style="text-align: left;">
<span style="font-size: large;"><b><u><span style="color: red;">MainActivity.java</span></u></b></span></h3>
<span style="color: #073763;">package com.rajeshvijayakumar.sharedpreferences;<br /><br />import android.app.Activity;<br />import android.content.SharedPreferences;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.EditText;<br />import android.widget.TextView;<br />import android.widget.Toast;<br /><br />public class MainActivity extends Activity implements OnClickListener {<br /><br /> private EditText mInputEditText;<br /> private TextView mOutputView;<br /> private Button mSaveButton;<br /> private Button mShowButton;<br /> private Button mDeleteButton;<br /> private Button mClearButton;<br /><br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.activity_main);<br /> mInputEditText = (EditText) findViewById(R.id.pref_editText);<br /> mSaveButton = (Button) findViewById(R.id.save_button);<br /> mShowButton = (Button) findViewById(R.id.show_button);<br /> mDeleteButton = (Button) findViewById(R.id.delete_button);<br /> mOutputView = (TextView) findViewById(R.id.pref_textView);<br /> mClearButton = (Button) findViewById(R.id.clear_button);<br /> mSaveButton.setOnClickListener(this);<br /> mShowButton.setOnClickListener(this);<br /> mDeleteButton.setOnClickListener(this);<br /> mClearButton.setOnClickListener(this);<br /> }<br /><br /> @Override<br /> public void onClick(View v) {<br /><br /> String message="";<br /> switch (v.getId()) {<br /> case R.id.save_button:<br /> SavePreferences("PrefDemo", mInputEditText.getText().toString());<br /> message="Text Saved in Preferences";<br /> break;<br /> case R.id.delete_button:<br /> deletePreferences("PrefDemo");<br /> message = "Text Deleted from Preferences";<br /> break;<br /> case R.id.show_button:<br /> showPreferences("PrefDemo");<br /> message="Text Displayed from Preferences";<br /> break;<br /> case R.id.clear_button:<br /> clearAllPreferences();<br /> message="Removed All Text from All Preferences";<br /> break;<br /> }<br /> Toast.makeText(this, message, Toast.LENGTH_LONG).show();<br /> }<br /><br /> private void SavePreferences(String key, String value) {<br /> SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);<br /> SharedPreferences.Editor editor = sharedPreferences.edit();<br /> editor.putString(key, value);<br /> editor.commit();<br /> }<br /><br /> private void deletePreferences(String key) {<br /><br /> SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);<br /> SharedPreferences.Editor editor = sharedPreferences.edit();<br /> editor.remove(key);<br /> editor.commit();<br /> }<br /> <br /> private void clearAllPreferences() {<br /> SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);<br /> SharedPreferences.Editor editor = sharedPreferences.edit();<br /> editor.clear();<br /> editor.commit();<br /> }<br /> private void showPreferences(String key){<br /> SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);<br /> String savedPref = sharedPreferences.getString(key, "");<br /> mOutputView.setText(savedPref);<br /> }<br />}</span><br />
<br />
<h3 style="text-align: left;">
<span style="font-size: large;"><span style="color: red;"><u><b>output :</b></u></span></span></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQNpouuSbqBHof0HknkjdCigxepdqZ5CC2RtsbmYiUJjXD92HqGhTTGt_zEVa_F2IMnA5XtREMuDelAqpopSFYB1BBieVKCL004TXLzHCFj_CRiAeZmASOJ8fzx9khTvqJE-fduhyBk4k/s1600/SP_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQNpouuSbqBHof0HknkjdCigxepdqZ5CC2RtsbmYiUJjXD92HqGhTTGt_zEVa_F2IMnA5XtREMuDelAqpopSFYB1BBieVKCL004TXLzHCFj_CRiAeZmASOJ8fzx9khTvqJE-fduhyBk4k/s320/SP_03.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgllOxb50W8RVu4vMMh2ExcsP8MzEQX-1Chpiki9psRUdOUmRvZ76TvpbSeRuDB0DVELa8105ocXLmSPFFmOpvtWe5DDO_pzgM1IwFcQabEyB0lYwWna11atiGqeAxRwjemkQBDSsYT6cc/s1600/SP_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgllOxb50W8RVu4vMMh2ExcsP8MzEQX-1Chpiki9psRUdOUmRvZ76TvpbSeRuDB0DVELa8105ocXLmSPFFmOpvtWe5DDO_pzgM1IwFcQabEyB0lYwWna11atiGqeAxRwjemkQBDSsYT6cc/s320/SP_02.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYZIXXfd3G62q0__nUYLGiTxM7vV8M2iWwdfTh-gPH7TTA5fZcyFmiH2HpPHQqb_ka7RKpRZ0tPn-sgBKjtIwBnXlaec13-yQ_XtVnEBtg8GqF08kPT0zqWf1FJO7vm-Qy_O7gfOmseuo/s1600/SP_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYZIXXfd3G62q0__nUYLGiTxM7vV8M2iWwdfTh-gPH7TTA5fZcyFmiH2HpPHQqb_ka7RKpRZ0tPn-sgBKjtIwBnXlaec13-yQ_XtVnEBtg8GqF08kPT0zqWf1FJO7vm-Qy_O7gfOmseuo/s320/SP_01.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuQBKFT0vRG88jjP83q5FX7HU_JxyhxRxdhXsuW0gKTtb8BSOQo0Kx91lqzvEx2MevWw53VsZ4PnbFlmWqdZw3NiMeGC8uJXOA_f2DuzDb3alIl5LJmLJBElRe29XAwDdV_NLx6B_qjqQ/s1600/SP_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuQBKFT0vRG88jjP83q5FX7HU_JxyhxRxdhXsuW0gKTtb8BSOQo0Kx91lqzvEx2MevWw53VsZ4PnbFlmWqdZw3NiMeGC8uJXOA_f2DuzDb3alIl5LJmLJBElRe29XAwDdV_NLx6B_qjqQ/s320/SP_04.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhks5y1K8pyrrN_eQiW3X33gsYoNIIH9VitshSiLshLZXHVKKeTpXHgE8CsVmQDfLS-KO7ao_60sHRoFI-iAHJRdwyRxySDbB24u5_3Q-Y2SYGg2pb02Y3Dm_o7gy5ETc6AYX6pTZoPqRQ/s1600/SP_05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhks5y1K8pyrrN_eQiW3X33gsYoNIIH9VitshSiLshLZXHVKKeTpXHgE8CsVmQDfLS-KO7ao_60sHRoFI-iAHJRdwyRxySDbB24u5_3Q-Y2SYGg2pb02Y3Dm_o7gy5ETc6AYX6pTZoPqRQ/s320/SP_05.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE0yXHFnCWbu78yzh-Qr4clHta2GWfBjfBKjM-an4doI2Gc00dTXCV8b4Ykp2dsfwpO8QzY3m0q5TsJSo3SgFTkMPNMZGMIHB9WohpXeP-FpI-IZyTq9ae_v5Homqw_vXzIGm0IYIJ9lc/s1600/SP_06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<span style="color: #073763;">Source Code :</span> <a href="http://www.ziddu.com/download/21840726/shared-preferences-example.zip.html">Download this Example Here</a><br />
<br />
<br /></div>
Unknownnoreply@blogger.com9