tag:blogger.com,1999:blog-41524422902562205932024-03-19T01:48:24.567-07:00Learn Computer Science from Beginner to Expertmasoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.comBlogger81125tag:blogger.com,1999:blog-4152442290256220593.post-8587404658352510762023-04-14T16:56:00.002-07:002023-04-14T16:58:27.687-07:00[Laravel] Lunar: The Laravel E-commerce Solution for Modern Headless Functionality and Dynamic Storefronts<div><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhtR-Nn_-pB4TSmLLhmzR35QehQOkrJGjtvVU9Rz8LCQMELUY173anzc6nNWxtLnKcXLYvJ9u_whhzBfczOj4NrsBFXCgkBYLPaHeRZ_iDQ_igkEkfTTuqGBsqOaB1b5YcA-NGsatL2Y-FeAIihtyew5vPZ9AmktzpY08V4N91BL7tHirjXRXfdZQEg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">
<img border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEhtR-Nn_-pB4TSmLLhmzR35QehQOkrJGjtvVU9Rz8LCQMELUY173anzc6nNWxtLnKcXLYvJ9u_whhzBfczOj4NrsBFXCgkBYLPaHeRZ_iDQ_igkEkfTTuqGBsqOaB1b5YcA-NGsatL2Y-FeAIihtyew5vPZ9AmktzpY08V4N91BL7tHirjXRXfdZQEg" width="400">
</a>
</div><br></div><div><a href="https://lunarphp.io/"><b>Lunar</b></a> is a software package that has been specifically designed to work with Laravel, a popular PHP web application framework. It is an open-source package, which means it is free to use and can be modified according to your requirements.</div><div><br></div><div>Lunar brings the power of modern headless e-commerce functionality to Laravel. A headless e-commerce system is one that separates the frontend and backend of an e-commerce website. This allows for greater flexibility and control over the user experience, as well as making it easier to integrate with other systems.</div><div><br></div><div>With Lunar, you can have complete control over the e-commerce frontend experience. This means you can create a custom design that perfectly matches your brand, without being limited by the constraints of a pre-built e-commerce platform.</div><div><br></div><div>Lunar has also done the hard work for you in the backend. It handles complex e-commerce functionality such as managing products, inventory, orders, and payments with ease. This means you can focus on creating a great user experience for your customers, without worrying about the technical details.</div><div><br></div><div>In addition to its core features, Lunar ships with an admin hub UI that makes it easy to manage your e-commerce site. You can access this UI by visiting /hub once you have installed Lunar. The admin hub UI is intuitive and user-friendly, allowing you to manage products, orders, and other aspects of your e-commerce site with ease.</div><div><br></div><div>Overall, Lunar is a powerful package that makes it easy to create a custom e-commerce site with Laravel. Its flexible frontend and powerful backend make it an excellent choice for businesses looking to create a unique e-commerce experience for their customers.</div><div><br></div><div>In addition to Lunar's core features and admin hub UI, there is also a <a href="https://github.com/lunarphp/livewire-starter-kit"><b>Lunar Livewire starter kit</b></a> available. This starter kit serves as a reference for those who are looking to learn how to integrate various aspects of the frontend store.</div><div><br></div><div>Livewire is a popular Laravel package that allows you to create dynamic user interfaces with minimal JavaScript. The Lunar Livewire starter kit is a pre-built example of how to use Livewire to create a dynamic e-commerce storefront.</div><div><br></div><div>Lunar project aims to offer a RESTful Storefront API for JavaScript frontends or mobile apps to power your e-commerce site.</div>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-6435943235811995612022-11-19T05:04:00.002-08:002022-11-19T05:04:27.796-08:00[Data Structure] [Tree] Level Order Traversal - Best Method [C++]<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1s2Q1StiN75sJ4U-Zl8OUsawCDHkKx3_0xDvxOjw0geFLaUxwM_WRqXSMB19sGxWEqbqjDXzlD2HvJ4z0vRYv2lY61w-bE0W_tfwj_xsl1z71-hLSmlJkF3sNMTh7ap25eWzNUCEfefwFKou_NP4OkCrTXEn1MSzmQYYePcgB6l1sxoVahLlGfIcf/s1280/level_order_traversal.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Level Order Traversal" border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1s2Q1StiN75sJ4U-Zl8OUsawCDHkKx3_0xDvxOjw0geFLaUxwM_WRqXSMB19sGxWEqbqjDXzlD2HvJ4z0vRYv2lY61w-bE0W_tfwj_xsl1z71-hLSmlJkF3sNMTh7ap25eWzNUCEfefwFKou_NP4OkCrTXEn1MSzmQYYePcgB6l1sxoVahLlGfIcf/w640-h360/level_order_traversal.png" title="Level Order Traversal - masoomyf.com" width="640" /></a></div><br /><p><br /></p><p><span style="color: #444444; font-family: verdana; font-size: medium;">Level Order Traversal is a traversal algorithm in Tree Data Structure, where a tree traversed from left to right for each level one by one.</span></p><p><span style="color: #444444; font-family: verdana; font-size: medium;">So level order traversal first traverse the root node which is at level zero and then for level 1 and so on.</span></p><p><span style="color: #444444; font-family: verdana; font-size: medium;">There are four way commonly used for traverse the binary tree:</span></p><p></p><ul style="text-align: left;"><li><span style="color: #444444; font-family: verdana; font-size: medium;">In Order</span></li><li><span style="color: #444444; font-family: verdana; font-size: medium;">Pre Order</span></li><li><span style="color: #444444; font-family: verdana; font-size: medium;">Post Order</span></li><li><span style="color: #444444; font-family: verdana; font-size: medium;">Level Order </span></li></ul><span style="color: #444444; font-family: verdana; font-size: medium;">Let's understand what is level order in binary tree and how to traverse binary tree using Level Order Traversal.</span><p></p><p><span style="color: #444444; font-family: verdana; font-size: medium;">A level is the number of parent nodes corresponding to a given a node of the tree. It is basically the number of ancestors from that node until the root node.</span></p><p><span style="color: #444444; font-family: verdana; font-size: medium;">So, root node level is zero, since it has no parents. If it has two children, both children level would be 1, since it has only one ancestor until the root node, which is the root node itself.</span></p><p><span style="color: #444444; font-family: verdana; font-size: medium;">Now, you should understand that what is level and how level order traversal traverse the binary tree. Lets take an example:</span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizh2e2D0PuxhUOh7ALzlHRfb6e97CvH7iYSzt0DPY0n9k-YubHwsLEjao944erYoSvQ9nsmRX_f0rmUGAzcegy3q0EAmovF3Ml5ZM_LPnnTewrTmNx7h4yoG-7jzXlznQ4NzvDIP_D9qpirYKT98RIMv6HAjs9ODhChPeJtoS29GArqqJjB_BQ35hj/s960/Untitled%20drawing.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="960" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizh2e2D0PuxhUOh7ALzlHRfb6e97CvH7iYSzt0DPY0n9k-YubHwsLEjao944erYoSvQ9nsmRX_f0rmUGAzcegy3q0EAmovF3Ml5ZM_LPnnTewrTmNx7h4yoG-7jzXlznQ4NzvDIP_D9qpirYKT98RIMv6HAjs9ODhChPeJtoS29GArqqJjB_BQ35hj/w640-h480/Untitled%20drawing.png" width="640" /></a></div><span style="color: #444444; font-family: verdana; font-size: medium;">In the above figure, we start traveling level 0 i.e. root node.</span><div><span style="color: #444444; font-family: verdana; font-size: medium;">Then goto level 1 and travel 4, 8 and so on...</span></div><div><span style="color: #444444; font-family: verdana; font-size: medium;"><br /></span></div><div><span style="color: #444444; font-family: verdana; font-size: medium;">So we travel in the order: 6, 4, 8, 2, 5, 7, 9, 3, 10</span></div><div><span style="color: #444444; font-family: verdana; font-size: medium;"><br /></span></div><div><span style="color: #444444; font-family: verdana; font-size: medium;">For implementation we need a queue data structure. to travel in level order<br /></span><p><span style="color: #444444; font-family: verdana; font-size: medium;">C++ implementation:</span></p><p><br /></p></div>
<div>
<script src="https://gist.github.com/masoomyf/da84da039d96fd58a2c87638720d55eb.js"></script>
</div>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-76024182730004467402022-09-10T08:15:00.001-07:002022-09-10T08:22:53.116-07:00[Fixed : Android] Detect ScrollView stop scrolling or in scrolling perfect solution.<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXAg2u-sMsluiJXZuYDfNJxi7I92WmixuYXIlUb3VLcn4HtttY0r8Wi6OSTJFI6lQPXWatIUs-iUWS94efWu02UvWpIv60e4GOZfUyooVLsieQjPVAGK4j7q7MyXr4ul3Jnk_tLkybDKZs9oRq8SrssFYCatoWV1nGlUN8VHKRXctKeveqk43geM0W/s1280/template.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXAg2u-sMsluiJXZuYDfNJxi7I92WmixuYXIlUb3VLcn4HtttY0r8Wi6OSTJFI6lQPXWatIUs-iUWS94efWu02UvWpIv60e4GOZfUyooVLsieQjPVAGK4j7q7MyXr4ul3Jnk_tLkybDKZs9oRq8SrssFYCatoWV1nGlUN8VHKRXctKeveqk43geM0W/w640-h360/template.png" width="640" /></a></div><br /><span style="font-family: helvetica;"><br /></span><p></p><p><span style="font-family: helvetica;">[Fixed : Android] Detect ScrollView stop scrolling or in scrolling perfect solution.<br /></span> </p><p><span style="color: #444444; font-family: verdana;">Hello Devs, </span></p><p><span style="color: #444444; font-family: verdana;">ScrollView don't provide a method that will tell if ScrollView is in Idle state or in Scrolling State. Still ScrollView provides listeners that will tell the oldScroll Position or Current Scroll Position. When we use tree observer it will tell the scrolling state only.</span></p><p><span style="color: #444444; font-family: verdana;">After mixing of some listeners and customize logic I come across to created a Custom ScrollView that will exactly tell the state of ScrollView, no matter whether scrollView is touching by the user or not.</span></p><p><span style="color: #444444; font-family: verdana;">I have created a Custom View that extends to ScrollView and added a touch event listener to it.</span></p><p><span style="color: #444444; font-family: verdana;">With the help of coroutine and some flag I am able to create a perfect EventScrollView, here it is:</span></p><p><br /></p><p><br /></p>
<script src="https://gist.github.com/masoomyf/20d5772650a2a094dcc846844800c324.js"></script>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-35549936780029569632022-09-09T08:54:00.003-07:002022-09-10T08:23:55.986-07:00[Fixed] [Android] How to fire stop/scrolling event in ScrollView. <p> <span style="color: #444444; font-family: verdana;">Hello Devs, </span></p><p><span style="color: #444444; font-family: verdana;"><a href="https://edu.masoomyf.com/2022/09/fixed-android-detect-scrollview-stop.html">FIXED: SOLUTION IDLE or SCROLLING</a></span></p><p><span style="color: #444444; font-family: verdana;">I am searching ways to detect scrolling event of Scroll View, actually I need to detect when ScrollView starts scrolling and when it is stop scrolling. After lot of reading in stackoverflow and many other website, I haven't found any best solution. And I started writing my known by taking help from other solutions present on various website.</span></p><p><span style="color: #444444; font-family: verdana;"><br /></span></p><p><span style="color: #444444; font-family: verdana;">I have created a Custom View that extends to ScrollView and added a touch event listener to it.</span></p><p><span style="color: #444444; font-family: verdana;">With the help of coroutine and some flag I am able to create a perfect EventScrollView, here it is:</span></p><p><br /></p><p><br /></p>
<script src="https://gist.github.com/masoomyf/20d5772650a2a094dcc846844800c324.js"></script>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-76651400806216204452019-05-14T10:40:00.001-07:002019-05-14T11:00:41.906-07:00Kotlin for loop mastering with step, reverse, foreach<p dir="ltr">Kotlin made for loop very easy in compare to any language🔥.</p>
<p dir="ltr">In java we know two types of for loop:<br>
<b>1. Index for loop</b><br>
for(i=0;i<10;i++){<br>
}</p>
<p dir="ltr"><b>2. Iteration for loop</b><br>
for(Object obj: objectList){<br>
}</p>
<p dir="ltr">In kotlin we have multiple types of for loop for every moment 😍</p>
<p dir="ltr">Choose your loop according to your mood 😎</p>
<p dir="ltr"><b>1. If we want to start loop with index 1 and upto n, we can use:</b><br>
//Taking n=10</p>
<p dir="ltr">repeat(10){<br>
    print(it)<i> //Every time it contains update</i> index.<br>
}</p>
<p dir="ltr"><b>2.  If we want to loop between ranges i.e. 10 to 100 (both inclusive)</b></p>
<p dir="ltr">for(i in 10..100){<br>
    print(i) //No need to create variable i.<br>
}</p>
<p dir="ltr"><b>3. If we want to loop through 0 to array length - 1 </b></p>
<p dir="ltr">for(i in 0 until array.size){<br>
    print(array[i]) <br>
}</p>
<p dir="ltr"><b>4. If we want to loop through 100 to 1</b></p>
<p dir="ltr">for(i in 100 downTo 1){<br>
    print(i)<br>
}</p>
<p dir="ltr"><b>5.  If we want to loop with steps i.e.  1,3,5,7 and so on...</b></p>
<p dir="ltr">for(i in 1..100 step 2){<br>
    print(i);<br>
}</p>
<p dir="ltr"><b>6. If we want step with reverse loop</b></p>
<p dir="ltr">for(i in 100 downTo 1 step 2){<br>
    print(i);<br>
}</p>
<p dir="ltr"><b>7. For Each loop in Kotlin.</b><br>
<i><b>You dont need to declare a variable to get value from array inside it. Kotlin will auto create.</b></i></p>
<p dir="ltr">val someArray = arrayOf(1,2,3,4,5);</p>
<p dir="ltr">for(num in someArray){<br>
    print(num); <br>
}</p>
<p dir="ltr"><b>Alternatively, you can use powerful kotlin extension lamda function:</b></p>
<p dir="ltr">someArray.forEach{<br>
    print(it);<br>
}</p>
<p dir="ltr"><b>or</b></p>
<p dir="ltr">someArray.forEach{<i>num</i>-><br>
    print(num);<br>
}</p>
<p dir="ltr"><b>or</b> </p>
<p dir="ltr">someArray.forEachIndexed{<i>i, num</i>-><br>
    print("$num is at index $i")<br>
}</p>
<p dir="ltr"><b>If we aren't sure that array may be null or not then we use:</b></p>
<p dir="ltr">someArray<b>?</b>.forEach{ print(it) }</p>
<p dir="ltr">That's all for now. If anyone know more than this let me know that intelligent person 😂.</p>
<p dir="ltr">Kotlin is just "<b>easy</b>". Coding like playing games 😎😋🍃</p>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-33323478416397579292019-04-21T21:04:00.002-07:002019-04-21T21:04:37.860-07:00Kotlin - Creating class, primary constructor, multiple constructor<div dir="ltr" style="text-align: left;" trbidi="on">
We are going to learn about Kotlin Classes, primary constructor, secondary constructor, initialization etc in a very good approach by comparing Java.<br />
<br />
In Kotlin, <b>class </b>keyword is use to create a Class (as same as Java)<br />
<br />
<b>Example:</b><br />
<br />
<b>HelloWorld.kt</b><br />
<b><br /></b>
<span style="font-family: "courier new" , "courier" , monospace;"><b>class </b>HelloWorld <span style="color: #38761d;">/* In kotlin is class body is empty, then {} is not needed. */</span></span><br />
<br />
<br />
<div style="text-align: center;">
<b><u>And in Java</u></b></div>
<b><u><br /></u></b>
<b>HelloWorld.java</b><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><b>class </b>HelloWorld { }</span><br />
<br />
<h3 style="text-align: left;">
<br /><b><span style="color: #073763; font-size: large;">Now we add some class fields(i.e. class variable to our class and see the difference)</span></b></h3>
<br />
<br />
<b><u>HelloWorld.kt</u></b><br />
<b><u><br /></u></b>
<span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: blue;">class </span></b>HelloWorld{</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">private var </span></b>name:<b>String</b> <span style="color: #666666;">/* This is class field and confirm that it never be null */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: #38761d;"> </span><span style="color: #666666;">/*Below block is primary constructor initialization block*/</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><i><span style="color: blue;">init</span></i></b>{</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> name = <span style="color: #274e13;">"Test"</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<br />
<div style="text-align: center;">
<b><u>And in Java</u></b></div>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: blue;">class </span></b>HelloWorld<b>{</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">private </span>String </b>name; <span style="color: #666666;">/* Here name may be null */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">public </span></b>HelloWorld()<b>{</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> name = <span style="color: #274e13;">"Test"</span>;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b>}</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><b>}</b></span><br />
<br />
<br />
<br />
<span style="color: #0b5394; font-size: large;"><br /></span>
<br />
<h3 style="text-align: left;">
<b><span style="color: #0b5394; font-size: large;">Now we will initialize class fields with primary constructor, primary constructor means the 1st constructor.</span></b></h3>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: blue;">class </span></b>HelloWorld(<span style="color: blue;">private var </span>name:String)</span><br />
<br />
<br />
<div style="text-align: center;">
<b><u>And in Java</u></b></div>
<div style="text-align: left;">
<b><u><span style="font-family: "courier new" , "courier" , monospace;"><br /></span></u></b></div>
<span style="font-family: "courier new" , "courier" , monospace;"><b><span style="color: blue;">class </span></b>HelloWorld{</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">private </span>String </b>name<b>;</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">public </span></b>HelloWorld(<b>String </b>name){</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">this</span></b>.name = name;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<br />
<br />
Here you see the code difference, In kotlin every field which will initialize by constructor will be move in class i.e.<b><i> <span style="color: blue;">class </span>Test(<span style="color: blue;">var </span>field1:String,<span style="color: blue;">var </span>field2:Int,<span style="color: blue;">var </span>field3:Any)</i></b><br />
<b><i><br /></i></b>
<i style="font-weight: bold;">Note: </i>If you want to make class field private, use <b><span style="color: blue;">private </span>modifier,.</b><br />
If you remove the word <b>"<span style="color: blue;">var</span>", field will only available in <span style="color: blue;">init </span>method</b><br />
<b><br /></b>
<b><br /></b>
<br />
<h3 style="text-align: left;">
<b><span style="color: #0b5394; font-size: large;">Constructor overloading in Kotlin vs Java</span></b></h3>
<div>
<b><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><u>In Java</u></span></b></div>
<div>
<b><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><u><br /></u></span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: blue;">class </span>HelloWorld{</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">public </span><span style="color: #b45f06;">int </span>id;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">public </span><span style="color: #b45f06;">String </span>name;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">public </span><span style="color: #b45f06;">int </span>year;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> </span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">public </span>HelloWorld(<span style="color: #b45f06;">int </span>id){</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.id = id;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.name = <span style="color: #274e13;">"No Name"</span>;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.year = <span style="color: #0b5394;">0</span>;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> }</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"><br /></span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">public </span>HelloWorld(<span style="color: #b45f06;">int </span>id, <span style="color: #b45f06;">String </span>name){</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.id = id;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.name = name;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.year = <span style="color: #0b5394;">0</span>;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> }</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"><br /></span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">public </span>HelloWorld(<span style="color: #b45f06;">int </span>id, <span style="color: #b45f06;">String </span>name, <span style="color: #b45f06;">int </span>year){</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.id = id;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.name = name;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: blue;">this</span>.year = year;</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"> }</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;">}</span></b></div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;"><br /></span></b></div>
<div style="text-align: center;">
<b><span style="font-family: "georgia" , "times new roman" , serif;"><u>In Kotlin</u></span></b></div>
<div style="text-align: center;">
<b><span style="font-family: "georgia" , "times new roman" , serif;"><u><br /></u></span></b></div>
<span style="color: blue; font-weight: bold;">class </span>HelloWorld<b>(</b><span style="color: blue; font-weight: bold;">var </span>id:Int<b>, </b><span style="color: blue; font-weight: bold;">var </span>name:String <b>=<span style="color: #274e13;"> "No Name"</span>, var </b>year:Int<b>=<span style="color: blue;">0</span>)</b><br />
<b><br /></b>
<b><br /></b>
<b>You can use Kotlin class like this:</b><br />
<b><br /></b>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: blue;"><b>var </b></span>c1 = HelloWorld(<b>id</b>=2, <b>year</b>=5)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: blue;"><b>var </b></span>c2 = HelloWorld(10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: blue;"><b>var </b></span>c3 = HelloWorld(10, <span style="color: #274e13;">"Hello"</span>, 5)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: blue;"><b>var </b></span>c4 = HelloWorld(<b>year</b>=5, <b>id</b>=2, <b>name</b>=<span style="color: #274e13;">"Test"</span>)</span><br />
<b><br /></b>
<b>As you see above, name and year param are optional, if you don't provide values to this field, it will use the default values. These are called optional parameter and can be used in class as well as in functions(method)</b><br />
<b><br /></b>
<b><br /></b>
<br />
<h3 style="text-align: left;">
<b><span style="color: #0b5394; font-size: large;">Secondary Constructor in Kotlin</span></b></h3>
<div>
In Kotlin, there is secondary constructor too. If the above way is not fit for your code, you can use secondary constructor.</div>
<div>
<br /></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: blue;"><b>class </b></span>HelloWorld(<b><span style="color: blue;">var </span></b>id: Int){</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> <b><span style="color: blue;">constructor</span></b>(<b><span style="color: blue;">var </span></b>world: HelloWorld): <b><span style="color: blue;">this</span></b>(world.id){</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> }</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">}</span></div>
<b><br /></b>
<b><br /></b>
Here, constructor word is use to create a secondary constructor.<br />
In the above code, there is two consturctor:<br />
1.Primary Constructor (needs id)<br />
2. Secondary Constructor (need HelloWorld object)<br />
<br />
In Secondary constructor, we use <b><span style="font-family: "courier new" , "courier" , monospace;">:<span style="color: blue;">this</span>(world.id)</span> , it means we must call primary constructor first. If you don't want to call primary constructor, don't make primary constructor.</b><br />
<b><br /></b>
<b><br /></b>
</div>
Art Softhttp://www.blogger.com/profile/11356395000255632157noreply@blogger.com1tag:blogger.com,1999:blog-4152442290256220593.post-22777824691968018482019-03-13T23:10:00.000-07:002019-03-13T23:10:12.521-07:00Fan Controller Kotlin - Create a custom view from scratch (Advanced Android 10.1 Part B)<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Georgia, Times New Roman, serif;">Here we discuss about creating a fan controller from scratch by using Kotlin and AndroidX.</span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK4BvBm0DgAMJmo2wVNpaoQoejbwsxHhao7XKDF0lASReCQtbD4fVGIVj5My0O0a2GwLo-GsXd2FrI2IBzai8rOXlEdv0Ln8P9qBjhHGihatY91g0fqNnVGCwxQ2mk_4z5bV46EKGpFdE/s1600/device-2019-03-13-123631.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="778" data-original-width="720" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK4BvBm0DgAMJmo2wVNpaoQoejbwsxHhao7XKDF0lASReCQtbD4fVGIVj5My0O0a2GwLo-GsXd2FrI2IBzai8rOXlEdv0Ln8P9qBjhHGihatY91g0fqNnVGCwxQ2mk_4z5bV46EKGpFdE/s320/device-2019-03-13-123631.png" width="296" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fan Control view at initial stage</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVbNCekRpl4rWm4MbF67EDkpoSB8u3NcUt48BAfW3pbBD_ViDoBoyKpDd4JGDb6OkWPwQsvrV9F_elQWvHTMWzfNU0nYBG_iyYlFwjp9BwWcTQoNJTqgbfuXO8a5mHfzgOCxBkoFoo47I/s1600/device-2019-03-13-123647.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="785" data-original-width="720" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVbNCekRpl4rWm4MbF67EDkpoSB8u3NcUt48BAfW3pbBD_ViDoBoyKpDd4JGDb6OkWPwQsvrV9F_elQWvHTMWzfNU0nYBG_iyYlFwjp9BwWcTQoNJTqgbfuXO8a5mHfzgOCxBkoFoo47I/s320/device-2019-03-13-123647.png" width="293" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fan control view when user tap on it.</td></tr>
</tbody></table>
<br />
<br />
<span style="color: #0b5394;">For creating Fan Controller, a custom view from scratch, you need the following steps:</span><br />
<div>
<br /></div>
<div>
<span style="font-family: Georgia, Times New Roman, serif;">STEP 1:</span></div>
<div>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Create a new Android Project "Fan Controller"</span></div>
<div>
<br /></div>
<div>
<span style="font-family: Georgia, Times New Roman, serif;">STEP 2:</span></div>
<div>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Goto "layout_main.xml" and a ImageView and a TextView like this:</span></div>
<div>
<br /></div>
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"> <code class="language-xml">
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fan Control"
android:id="@+id/customViewLabel"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Display1"
android:padding="16dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="24dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/dialView" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/customViewLabel" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
android:background="@android:color/darker_gray"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</code>
</pre>
</div>
<div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheN7ukER1bDZ0eoYp5MIpLSd5Dezw6a7LQnEiycFr1jzqAQjpSiAhcOkcHRqhHHO5xbt8zdtxGW2rsMhq4IS9XI_jUKWDC9JtmRa0Uqf3D6yrIJsOQuDx2Nutf1P7ZSHBGKMrAfjo1iSU/s1600/e1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="295" data-original-width="628" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheN7ukER1bDZ0eoYp5MIpLSd5Dezw6a7LQnEiycFr1jzqAQjpSiAhcOkcHRqhHHO5xbt8zdtxGW2rsMhq4IS9XI_jUKWDC9JtmRa0Uqf3D6yrIJsOQuDx2Nutf1P7ZSHBGKMrAfjo1iSU/s640/e1.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<div>
<br /></div>
<div>
<span style="font-family: Georgia, Times New Roman, serif;">STEP 3:</span></div>
<div>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Create a new kotlin class DialView which will extends View like this:</span><br />
<br />
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"><code class="language-kotlin">
class DialView: android.view.View {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
}
</code>
</pre>
</div>
<br />
<br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">The <span style="background-color: #eeeeee;">SELECTION_COUNT</span> defines the total number of selections for this custom view. The code is designed so that you can change this value to create a control with more or fewer selections.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">The <span style="background-color: #eeeeee;">mTempLabel</span> and <span style="background-color: #eeeeee;">mTempResult</span> member variables provide temporary storage for the result of calculations, and are used to reduce the memory allocations while drawing.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Add the following static object and class fields</span><br />
<br />
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"> <code class="language-kotlin">
companion object {
private var SELECTION_COUNT = 4
}
private var mWidth = 0f
private var mHeight = 0f
private var mTextPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = Color.BLACK
style = Paint.Style.FILL_AND_STROKE
textAlign = Paint.Align.CENTER
textSize = 40f
}
private var mDialPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = Color.GRAY
}
private var mRadius = 0f
private var mActiveSelection = 0
private val mTempLabel = StringBuffer(8)
private val mTempResult = FloatArray(2)
</code>
</pre>
</div>
<br />
<br />
<br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Because a custom view extends <span style="background-color: #eeeeee;">View</span>, you can override <span style="background-color: #eeeeee;">View </span>methods such as<span style="background-color: #eeeeee;"> onSizeChanged()</span> to control its behavior. In this case you want to determine the drawing bounds for the custom view's dial by setting its width and height, and calculating its radius, when the view size changes, which includes the first time it is drawn. Add the following to <span style="background-color: #eeeeee;">DialView</span></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Now override <span style="background-color: #eeeeee;">onSizeChanged </span>method and get value for width and height</span><br />
<br />
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"> <code class="language-kotlin">
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
mWidth = w.toFloat()
mHeight = h.toFloat()
mRadius = (Math.min(mWidth,mHeight)/2.0 * 0.8).toFloat()
}
</code>
</pre>
</div>
<br />
<br />
<span style="font-family: Georgia, Times New Roman, serif;">STEP 4: DRAW THE CUSTOM VIEW</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">To draw the custom view, your code needs to render an outer grey circle to serve as the dial, and a smaller black circle to serve as the indicator. The position of the indicator is based on the user's selection captured in<span style="background-color: #eeeeee;"> mActiveSelection</span>. Your code must calculate the indicator position before rendering the view. After adding the code to calculate the position, override the <span style="background-color: #eeeeee;">onDraw()</span> method to render the view.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">The code for drawing this view is provided without explanation because the focus of this lesson is creating and using a custom view. The code uses the Canvas methods <span style="background-color: #eeeeee;">drawCircle()</span> and <span style="background-color: #eeeeee;">drawText()</span></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Add the following <span style="background-color: #eeeeee;">computeXYForPosition()</span> method to <span style="background-color: #eeeeee;">DialView </span>to compute the X and Y coordinates for the text label and indicator (0, 1, 2, or 3) of the chosen selection, given the position number and radius:</span><br />
<br />
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"> <code class="language-kotlin">
private fun computeXYForPosition(position:Int, radius:Float):FloatArray{
val result = mTempResult
val startAngle = Math.PI * (9 / 8.0)
val angle = startAngle + (position * (Math.PI / 4.0))
result[0] = (radius * Math.cos(angle) + (mWidth/2.0)).toFloat()
result[1] = (radius * Math.sin(angle) + (mHeight/2.0)).toFloat()
return result
}
</code>
</pre>
</div>
<br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">The position parameter is a position index (starting at 0). The radius parameter is for the outer circle.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">You will use the <span style="background-color: #eeeeee;">computeXYForPosition()</span> method in the <span style="background-color: #eeeeee;">onDraw()</span> method. It returns a two-element array for the position, in which element 0 is the X coordinate, and element 1 is the Y coordinate.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">To render the view on the screen, use the following code to override the <span style="background-color: #eeeeee;">onDraw()</span> method for the view. It uses<span style="background-color: #eeeeee;"> drawCircle()</span> to draw a circle for the dial, and to draw the indicator mark. It uses <span style="background-color: #eeeeee;">drawText()</span> to place text for labels, using a <span style="background-color: #eeeeee;">StringBuffer</span> for the label text.</span><br />
<br />
<br />
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"> <code class="language-kotlin">
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
canvas?.let {c->
c.drawCircle(mWidth/2,mHeight/2,mRadius,mDialPaint)
val labelRadius = mRadius + 20
val label = mTempLabel
for (i in 0 until SELECTION_COUNT){
val xyData = computeXYForPosition(i,labelRadius)
label.setLength(0)
label.append(i)
c.drawText(label,0,label.length,xyData[0],xyData[1],mTextPaint)
}
val markerRadius = mRadius - 35
val xyData = computeXYForPosition(mActiveSelection,markerRadius)
canvas.drawCircle(xyData[0],xyData[1],20f,mTextPaint)
}
}
</code>
</pre>
</div>
<br />
<br />
<span style="font-family: Georgia, Times New Roman, serif;">STEP 5: ADD CUSTOM VIEW TO LAYOUT</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Replace ImageView with your custom view in layout_main.xml, delete the background attribute and leave all attributes as it is.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Run the app to see changes</span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMm9uDnfwKtat7SO-n6p1NNLKOt_FiWIEeGAin_dIafr-JtHU6xFhZ_UQlwjP4znUYQ1rxjrZvXduphPtqC0Y1A0PtTclyifzoV0-jO_023iIUTdB5Rei6ESVYVLsUrPbFIsOiVdq77Q0/s1600/a1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Android Fan Controller View" border="0" data-original-height="256" data-original-width="625" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMm9uDnfwKtat7SO-n6p1NNLKOt_FiWIEeGAin_dIafr-JtHU6xFhZ_UQlwjP4znUYQ1rxjrZvXduphPtqC0Y1A0PtTclyifzoV0-jO_023iIUTdB5Rei6ESVYVLsUrPbFIsOiVdq77Q0/s320/a1.png" title="" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fan Controller View</td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<span style="font-family: Georgia, Times New Roman, serif;">STEP 6: ADD CLICK LISTENER FOR CONTROLLING</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">To add behavior to the custom view, add an<span style="background-color: #eeeeee;"> OnClickListener() </span>to the DialView <span style="background-color: #eeeeee;">init{}</span> method to perform an action when the user taps the view. Each tap should move the selection indicator to the next position: 0-1-2-3 and back to 0. Also, if the selection is 1 or higher, change the background from gray to green (indicating that the fan power is on):</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Add the<span style="background-color: #eeeeee;"> init{}</span> method after constructor definition or anywhere you want.</span><br />
<br />
<div style="overflow-x: scroll; width: 100%;">
<pre class="prettyprint"> <code class="language-kotlin">
init {
setOnClickListener {
mActiveSelection = (mActiveSelection+1) % SELECTION_COUNT
if (mActiveSelection >= 1){
mDialPaint.color = Color.GREEN
}else{
mDialPaint.color = Color.GRAY
}
invalidate()
}
}
</code>
</pre>
</div>
<br />
<span style="color: #444444;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">The <span style="background-color: #eeeeee;">invalidate()</span> method of View invalidates the entire view, forcing a call to <span style="background-color: #eeeeee;">onDraw() </span>to redraw the view. If something in your custom view changes and the change needs to be displayed, you need to call <span style="background-color: #eeeeee;">invalidate()</span>.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">now</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Run the app. Tap the <span style="background-color: #eeeeee;">DialView </span>element to move the indicator from 0 to 1. The dial should turn green. With each tap, the indicator should move to the next position. When the indicator reaches 0, the dial should turn gray.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Complete source code will available shortly</span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
</div>
Art Softhttp://www.blogger.com/profile/11356395000255632157noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-75297346061115359952018-11-19T10:10:00.001-08:002018-11-22T03:31:25.681-08:00Easy Android RecyclerView implementation with Adapter, Holder, Click Listener Example in Java and Kotlin both<div dir="ltr" style="text-align: left;" trbidi="on">
With lot of efforts and writing huge code for Android RecyclerView, I ended up with this code, but for now I think it is very easy to use and handle click listener. This implementation is different from any other implementation you see on many sites.<br />
<br />
Let's begin with coding...<br />
<br />
Create a new project with Android Studio with empty Activity "MainActivity"<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguwbJ584PcfmGSqJzvPEaaLXJ1X9z-TmL7jsNW1wPFCol602OMPf_Nc7znYYVh1gykBLQ1kyHEY7IDb6hh6o8vJ_x9vw96skf7mpn5xAcBPNloiWW3i4vTY5Z2MqzExzJgsxn0fZZva9U/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Configure Activity - Android Studio" border="0" data-original-height="637" data-original-width="887" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguwbJ584PcfmGSqJzvPEaaLXJ1X9z-TmL7jsNW1wPFCol602OMPf_Nc7znYYVh1gykBLQ1kyHEY7IDb6hh6o8vJ_x9vw96skf7mpn5xAcBPNloiWW3i4vTY5Z2MqzExzJgsxn0fZZva9U/s400/1.jpg" title="Configure Activity - Android Studio" width="400" /></a></div>
<br />
<br />
First we need to create a model (create separate package for all models is good)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmSkFQgnp3yE7btgSdumwNQvJiwYoYcSqHu5x5AW4W2ChDz7IFmV6SvdZNTuvU99u3tIX8f1-QZufQ35U03vXGY8AQaVLMZubosojaYgV5yp4INM1nNd1Ef2WMqOSXb0FXFwUwZWw1Fg/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Hierarchy of Android Project - Android Studio" border="0" data-original-height="477" data-original-width="355" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmSkFQgnp3yE7btgSdumwNQvJiwYoYcSqHu5x5AW4W2ChDz7IFmV6SvdZNTuvU99u3tIX8f1-QZufQ35U03vXGY8AQaVLMZubosojaYgV5yp4INM1nNd1Ef2WMqOSXb0FXFwUwZWw1Fg/s400/1.png" title="" width="297" /></a></div>
<br />
<br />
models/Student.java<br />
<br />
<pre class="prettyprint" style="text-align: left;"><code class="language-java">
package com.masoomyf.recyclerviewexample.models;
public class Student {
private int id;
private int age;
private String name;
public Student(int id, int age, String name) {
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
</code></pre>
<b>KOTLIN</b><br />
models/Student.kt<br />
<br />
<pre class="prettyprint" style="text-align: left;"><code class="language-kotlin">
package com.masoomyf.recyclerviewexample.models;
class Student(var id: Int, var age: Int, var name: String?)
</code></pre>
<div>
<br />
Add RecyclerView to your <b>main_layout.xml</b>, it will auto configure RecyclerView library for you in gradle. (Add RecyclerView in <b>Design Tab</b> only)<br />
<br />
Now create layout xml file: <b>row_layout_student.xml </b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixpvJkAi-8GmhZqnsYXu-9GazzO8S8dNe8MDScAtTTU6H8sNjVuM9Ytq0mW6a4lWwn1JZTBXImAqipfR0s1eQmMQ36dBCWlr55mk3Bcb4w9jzSV2T6WZguXM3IZfgzRIbtTvSjwefPxvc/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Layout for RecyclerView Adapter with Constraint Layout" border="0" data-original-height="360" data-original-width="640" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixpvJkAi-8GmhZqnsYXu-9GazzO8S8dNe8MDScAtTTU6H8sNjVuM9Ytq0mW6a4lWwn1JZTBXImAqipfR0s1eQmMQ36dBCWlr55mk3Bcb4w9jzSV2T6WZguXM3IZfgzRIbtTvSjwefPxvc/s400/2.jpg" title="" width="400" /></a></div>
<b><br /></b></div>
<pre class="prettyprint" style="text-align: left;"><code class="language-xml">
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/tvStudentName" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" tools:text="Student Name"
android:textStyle="bold"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/tvStudentId" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/tvStudentName"
tools:text="ID: 12345"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toStartOf="@+id/tvStudentAge"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/tvStudentAge" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/tvStudentName"
app:layout_constraintStart_toEndOf="@+id/tvStudentId" app:layout_constraintHorizontal_bias="0.5"
tools:text="Age: 21"/>
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" app:layout_constraintTop_toBottomOf="@+id/tvStudentAge"/>
</android.support.constraint.ConstraintLayout>
</code></pre>
<div>
<br />
<br />
Now create Adapter for RecyclerView: </div>
<div>
<pre class="prettyprint" style="text-align: left;"><code class="language-java">
package com.masoomyf.recyclerviewexample.adapters;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.masoomyf.recyclerviewexample.R;
import com.masoomyf.recyclerviewexample.models.Student;
import java.util.List;
public class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.StudentHolder> {
//We don't need any context field. We can get context from viewGroup.
private List<Student> studentList;
private View.OnClickListener clickListener;
public StudentAdapter(List<Student> studentList) {
this.studentList = studentList;
}
@NonNull
@Override
public StudentHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.row_layout_student,viewGroup,false);
return new StudentHolder(view);
}
@Override
public void onBindViewHolder(@NonNull StudentHolder studentHolder, int i) {
studentHolder.bind(studentList.get(i));
}
public void setClickListener(View.OnClickListener clickListener) {
this.clickListener = clickListener;
}
@Override
public int getItemCount() {
return studentList.size();
}
class StudentHolder extends RecyclerView.ViewHolder{
private TextView tvStudentId;
private TextView tvStudentName;
private TextView tvStudentAge;
StudentHolder(@NonNull View itemView) {
super(itemView);
//Setup all views inside itemView
tvStudentId = itemView.findViewById(R.id.tvStudentId);
tvStudentAge = itemView.findViewById(R.id.tvStudentAge);
tvStudentName = itemView.findViewById(R.id.tvStudentName);
//set the itemView click listener.
itemView.setOnClickListener(clickListener);
}
//It's look beautiful and become easy when we create bind method inside holder.
void bind(Student student){
tvStudentAge.setText(String.valueOf("Age: " + student.getAge()));
tvStudentName.setText(student.getName());
tvStudentId.setText(String.valueOf("Id: "+student.getId()));
//Always set tag after binding, if there is already a tag in itemView, it get replaced.
itemView.setTag(student);
}
}
}
</code></pre>
</div>
<div>
<b>KOTLIN</b><br/>
<pre class="prettyprint" style="text-align: left;"><code class="language-kotlin">
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.masoomyf.recyclerviewexample.R
import com.masoomyf.recyclerviewexample.models.Student
import kotlinx.android.synthetic.main.row_layout_student.view.*
class StudentAdapter(
private val studentList: List<Student>
) : RecyclerView.Adapter<StudentAdapter.StudentHolder>() {
var clickListener: View.OnClickListener? = null
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): StudentHolder {
val view = LayoutInflater.from(viewGroup.context)
.inflate(R.layout.row_layout_student, viewGroup, false)
return StudentHolder(view)
}
override fun onBindViewHolder(studentHolder: StudentHolder, i: Int) = studentHolder.bind(studentList[i])
override fun getItemCount(): Int = studentList.size
inner class StudentHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
init {
itemView.setOnClickListener(clickListener)
}
//It's look beautiful and become easy when we create bind method inside holder.
fun bind(student: Student) {
with(itemView) {
tvStudentAge.text = "Age: %d".format(student.age)
tvStudentName.text = student.name
tvStudentId.text = "Id: %d".format(student.id)
//Always set tag after binding, if there is already a tag in itemView, it get replaced.
tag = student
}
}
}
}
</code></pre>
</div>
<div>
Add code in MainActivity.java to complete RecyclerView</div>
<div>
<pre class="prettyprint" style="text-align: left;"><code class="language-java">
package com.masoomyf.recyclerviewexample;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;
import com.masoomyf.recyclerviewexample.adapters.StudentAdapter;
import com.masoomyf.recyclerviewexample.models.Student;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
//Recycler view instance holder.
private RecyclerView rvStudent;
private List<Student> studentList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupObject();
setupUI();
}
//It's good to setup all object in seperate method
private void setupObject() {
studentList = new ArrayList<>();
}
//This method will setup the whole UI, it's better to setup UI in seperate method.
private void setupUI() {
rvStudent = findViewById(R.id.rvStudent);
//We don't need to declare adapter variable in field.
// We can get adapter through recycler view whenever we need.
StudentAdapter adapter = new StudentAdapter(studentList);
adapter.setClickListener(studentListClickListener);
generateDummyData();
rvStudent.setLayoutManager(new LinearLayoutManager(this));
rvStudent.setAdapter(adapter);
}
//Add some dummy data to list.
private void generateDummyData() {
studentList.add(new Student(1,19,"Yash"));
studentList.add(new Student(2,21,"Masoom"));
studentList.add(new Student(3,22,"Yashika"));
studentList.add(new Student(4,24,"Amiy"));
}
//A click listener object that will fire when itemView get clicked with current item tag
private View.OnClickListener studentListClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//Get the Student object from itemView tag.
Student student = (Student) v.getTag();
Toast.makeText(MainActivity.this,student.getName(), Toast.LENGTH_SHORT).show();
}
};
}
</code>
</pre>
</div>
<div>
<b>KOTLIN</b><br/>
<pre class="prettyprint" style="text-align: left;"><code class="language-kotlin">
package com.masoomyf.recyclerviewexample
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import android.view.View
import android.widget.Toast
import com.masoomyf.recyclerviewexample.adapters.StudentAdapter
import com.masoomyf.recyclerviewexample.models.Student
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private val studentList = arrayListOf<Student>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupUI()
}
private fun setupUI() {
val studentAdapter = StudentAdapter(studentList).apply {
clickListener = studentClickListener
}
generateDummyData()
with(rvStudent){
layoutManager = LinearLayoutManager(this@MainActivity)
adapter = studentAdapter
}
}
private fun generateDummyData() {
with(studentList) {
add(Student(1, 19, "Yash"))
add(Student(2, 21, "Masoom"))
add(Student(3, 22, "Yashika"))
add(Student(4, 24, "Amiy"))
}
}
private val studentClickListener = View.OnClickListener {
val student = it.tag as Student
Toast.makeText(this,"Student Name: ${student.name}",Toast.LENGTH_LONG).show()
}
}
</code>
</pre>
</div>
</div>
Art Softhttp://www.blogger.com/profile/11356395000255632157noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-86819896928606535132018-08-06T03:28:00.000-07:002018-08-06T03:28:11.490-07:00Playing video in Android with VideoView complete tutorial.<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
Android VideoView widget tutorial and reference with Example</h3>
<div>
Android System provides VideoView widget in which we can play video file easily by providing video path or video URI.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0McsmOQaNQtQwhB2dVV9UaU9c07w1DjwxASx3hHucpXC4E3y4uu-zBxoKTbxU0jRXcQ8jwBAnC9DMDHMzgvr9HWqGyLDe-et00VuBVH4UeZrwQRUzqFg0OBRBZpIdOjkPZKyNTEd81bY/s1600/s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="640" data-original-width="360" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0McsmOQaNQtQwhB2dVV9UaU9c07w1DjwxASx3hHucpXC4E3y4uu-zBxoKTbxU0jRXcQ8jwBAnC9DMDHMzgvr9HWqGyLDe-et00VuBVH4UeZrwQRUzqFg0OBRBZpIdOjkPZKyNTEd81bY/s400/s.png" width="225" /></a></div>
<div>
<br /></div>
<div>
Steps:</div>
<div>
1. Add video view to activity layout (example: <b>activity_main.xml</b>)</div>
<div>
<pre class="prettyprint"><code class="language-xml">
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<VideoView
android:id="@+id/videoView"
android:layout_width="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_height="0dp" />
</android.support.constraint.ConstraintLayout>
</code>
</pre>
</div>
2. Now initialize VideoView in Activity (example: <b>MainActivity.java</b>)<br />
<br />
<pre class="prettyprint" style="text-align: left;"><code class="language-java">
package com.masoomyf.videoviewexample;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.VideoView;
public class MainActivity extends AppCompatActivity {
//Video view object to hold video view.
private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Setup the UI
setupUI();
//Load Video
loadVideo();
}
private void loadVideo() {
//Video is in /res/raw/sample.mp4 so we need uri.
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sample);
//Set video URI in video view
mVideoView.setVideoURI(uri);
//start the video.
mVideoView.start();
}
private void setupUI() {
//Assigning video view
mVideoView = findViewById(R.id.videoView);
}
}
</code>
</pre>
<h4 style="text-align: left;">
<b>Optional Steps (To Add MediaController to VideoView)</b></h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqoPf72IKwgUmoWkM-KfJYQ1Fvuf8yc1YR-NYufLKWp9hW3vWnKf3GAsQTkS0FmXqi6y2HDm3Nho5dNDK9lGpxnqSJfwryV5vTGB3MFSQBt7dD2BzGGthDnzEYDmheYR7B9-GSxo9zFZo/s1600/aaa.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Android VideoView with MediaController" border="0" data-original-height="1280" data-original-width="720" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqoPf72IKwgUmoWkM-KfJYQ1Fvuf8yc1YR-NYufLKWp9hW3vWnKf3GAsQTkS0FmXqi6y2HDm3Nho5dNDK9lGpxnqSJfwryV5vTGB3MFSQBt7dD2BzGGthDnzEYDmheYR7B9-GSxo9zFZo/s320/aaa.png" title="" width="180" /></a></div>
<div>
<b><br /></b></div>
<div>
1. Create field MediaController mediaController;</div>
<div>
2. Initialize it in <b>setupUI():</b></div>
<div>
<b></b>mediaController = new MediaController(this);</div>
<div>
mVideoView.setMediaController(mediaController);</div>
<div>
<br /></div>
<div>
After performing following steps, MainActivity look like this:</div>
<div>
<br /></div>
<div>
<pre class="prettyprint" style="text-align: left;"><code class="language-java">
package com.masoomyf.videoviewexample;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class MainActivity extends AppCompatActivity {
//Video view object to hold video view.
private VideoView mVideoView;
//MediaController object to hold mediaController.
private MediaController mediaController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Setup the UI
setupUI();
//Load Video
loadVideo();
}
private void loadVideo() {
//Video is in /res/raw/sample.mp4 so we need uri.
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sample);
//Set video URI in video view
mVideoView.setVideoURI(uri);
//start the video.
mVideoView.start();
}
private void setupUI() {
//Assigning video view
mVideoView = findViewById(R.id.videoView);
mediaController = new MediaController(this);
mVideoView.setMediaController(mediaController);
}
}
</code>
</pre>
</div>
<br /></div>
Art Softhttp://www.blogger.com/profile/11356395000255632157noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-22528183859765340642018-07-05T03:57:00.001-07:002018-07-05T03:57:58.703-07:00[JAVA] How to get credit card/debit card type(i.e. Visa, Master) from card number<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUahS8jkSIG8IO0a-ESzsiFrxFn7uHSBocQTgRRyQPhtWmlJcOlBEcjSCZqI3RKSfLjPJ_EDkIlVGc84w2YDPrUXsod3ng09pkkFYAOAuu-3pSVQ3REvSyoGfIISCG8xTOGNZvNq9r5Jgl/s1600/Wm_pP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Visa Card, Credit Card, Master Card" border="0" data-original-height="114" data-original-width="440" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUahS8jkSIG8IO0a-ESzsiFrxFn7uHSBocQTgRRyQPhtWmlJcOlBEcjSCZqI3RKSfLjPJ_EDkIlVGc84w2YDPrUXsod3ng09pkkFYAOAuu-3pSVQ3REvSyoGfIISCG8xTOGNZvNq9r5Jgl/s400/Wm_pP.png" title="" width="400" /></a></div>
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Hello,</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">If you want to get card type i.e. Visa, Master, Rupay etc. by card number, here is the code you can use.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">This code uses regex for filtering out card type. You can use this method for getting the card type from card number (without space separation).</span><br />
<br />
<br />
<br />
<code>
<span style="font-family: monospace;">public String getCardType(String mCardNumber) {</span><br />
<span style="font-family: monospace;"> if (mCardNumber.startsWith("4")) {</span><br />
<span style="font-family: monospace;"> return "VISA";</span><br />
<span style="font-family: monospace;"> }else if (mCardNumber.matches("^508[5-9][0-9][0-9]|60698[5-9]|60699[0-9]|607[0-8][0-9][0-9]|6079[0-7][0-9]|60798[0-4]|(?!608000)608[0-4][0-9][0-9]|608500|6521[5-9][0-9]|652[2-9][0-9][0-9]|6530[0-9][0-9]|6531[0-4][0-9]")){</span><br />
<span style="font-family: monospace;"> return "RUPAY";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.matches("^((6304)|(6706)|(6771)|(6709))[\\d]+")) {</span><br />
<span style="font-family: monospace;"> return "LASER";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.matches("6(?:011|5[0-9]{2})[0-9]{12}[\\d]+")) {</span><br />
<span style="font-family: monospace;"> return "LASER";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.matches("(5[06-8]|6\\d)\\d{14}(\\d{2,3})?[\\d]+") || mCardNumber.matches("(5[06-8]|6\\d)[\\d]+") || mCardNumber.matches("((504([435|645|774|775|809|993]))|(60([0206]|[3845]))|(622[018])\\d)[\\d]+")) {</span><br />
<span style="font-family: monospace;"> </span><br />
<span style="font-family: monospace;"> return "MAESTRO";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.matches("^5[1-5][\\d]+")) {</span><br />
<span style="font-family: monospace;"> return "MASTER";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.matches("^3[47][\\d]+")) {</span><br />
<span style="font-family: monospace;"> return "AMEX";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.startsWith("36") || mCardNumber.matches("^30[0-5][\\d]+") || mCardNumber.matches("2(014|149)[\\d]+")) {</span><br />
<span style="font-family: monospace;"> return "DINR";</span><br />
<span style="font-family: monospace;"> } else if (mCardNumber.matches("^35(2[89]|[3-8][0-9])[\\d]+")) {</span><br />
<span style="font-family: monospace;"> return "JCB";</span><br />
<span style="font-family: monospace;"> }</span><br />
<span style="font-family: monospace;"> return "";</span><br />
<span style="font-family: monospace;"> }</span></code><br />
<br />
<br />
<span style="font-family: "georgia" , "times new roman" , serif;"><i><a href="http://edu.masoomyf.com/2018/07/phphow-to-get-credit-carddebit-card.html">[PHP]How to get credit card/debit card type(i.e. Visa, Master) from card number</a></i></span><br />
<br /></div>
Steve Wellshttp://www.blogger.com/profile/01339934094836773506noreply@blogger.com7tag:blogger.com,1999:blog-4152442290256220593.post-57959599354975958862018-07-05T03:51:00.002-07:002018-07-05T03:59:09.211-07:00[PHP]How to get credit card/debit card type(i.e. Visa, Master, Rupay) from card number<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUahS8jkSIG8IO0a-ESzsiFrxFn7uHSBocQTgRRyQPhtWmlJcOlBEcjSCZqI3RKSfLjPJ_EDkIlVGc84w2YDPrUXsod3ng09pkkFYAOAuu-3pSVQ3REvSyoGfIISCG8xTOGNZvNq9r5Jgl/s1600/Wm_pP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Visa Card, Credit Card, Master Card" border="0" data-original-height="114" data-original-width="440" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUahS8jkSIG8IO0a-ESzsiFrxFn7uHSBocQTgRRyQPhtWmlJcOlBEcjSCZqI3RKSfLjPJ_EDkIlVGc84w2YDPrUXsod3ng09pkkFYAOAuu-3pSVQ3REvSyoGfIISCG8xTOGNZvNq9r5Jgl/s400/Wm_pP.png" title="" width="400" /></a></div>
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Hello,</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">If you want to get card type i.e. Visa, Master, Rupay etc. by card number, here is the code you can use.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">This code uses regex for filtering out card type. You can use this function for getting the card type from card number (without space separation).</span><br />
<br />
<br />
<br />
<code><?php<br />
echo getCardType("<span style="font-family: monospace;">512654265322155433"</span>);<br />
<br />
function getCardType($cardNumber){<br />
<br />
if($cardNumber[0] == 4){<br />
return "VISA";<br />
}<br />
else if(mb_ereg("^508[5-9][0-9][0-9]|60698[5-9]|60699[0-9]|607[0-8][0-9][0-9]|6079[0-7][0-9]|60798[0-4]|(?!608000)608[0-4][0-9][0-9]|608500|6521[5-9][0-9]|652[2-9][0-9][0-9]|6530[0-9][0-9]|6531[0-4][0-9]",$cardNumber)){<br />
return "RUPAY";<br />
<br />
} else if (mb_ereg_match("^((6304)|(6706)|(6771)|(6709))[\\d]+",$cardNumber)) {<br />
return "LASER";<br />
} else if (mb_ereg("6(?:011|5[0-9]{2})[0-9]{12}[\\d]+",$cardNumber)) {<br />
return "LASER";<br />
} else if (mb_ereg_match("(5[06-8]|6\\d)\\d{14}(\\d{2,3})?[\\d]+",$cardNumber) ||mb_ereg_match("(5[06-8]|6\\d)[\\d]+",$cardNumber) || mb_ereg_match("((504([435|645|774|775|809|993]))|(60([0206]|[3845]))|(622[018])\\d)[\\d]+",$cardNumber)) {<br />
if (strlen($cardNumber) >= 6) { // wel we have 6 digit bin<br />
$substr = substr($cardNumber,0,6);<br />
if (<br />
strpos("504435",$substr)!==false ||<br />
strpos("504645",$substr)!==false ||<br />
strpos("504775",$substr)!==false ||<br />
strpos("504809",$substr)!==false ||<br />
strpos("504993",$substr)!==false ||<br />
strpos("600206",$substr)!==false ||<br />
strpos("603845",$substr)!==false ||<br />
strpos("622018",$substr)!==false ||<br />
strpos("504774",$substr)!==false<br />
) {<br />
return "SMAE";<br />
}<br />
}<br />
return "MAES";<br />
} else if (mb_ereg_match("^5[1-5][\\d]+",$cardNumber)) {<br />
return "MAST";<br />
} else if (mb_ereg_match("^3[47][\\d]+",$cardNumber)) {<br />
return "AMEX";<br />
} else if (($cardNumber[0]==3 && $cardNumber[1]==6) ||mb_ereg_match("^30[0-5][\\d]+",$cardNumber) ||mb_ereg_match("2(014|149)[\\d]+",$cardNumber)) {<br />
return "DINR";<br />
} else if (mb_ereg_match("^35(2[89]|[3-8][0-9])[\\d]+",$cardNumber)) {<br />
return "JCB";<br />
}<br />
return "";<br />
}</code><br />
<br />
<br />
<span style="font-family: "georgia" , "times new roman" , serif;"><i><a href="http://edu.masoomyf.com/2018/07/java-how-to-get-credit-carddebit-card.html">[Java]How to get credit card/debit card type(i.e. Visa, Master) from card number</a></i></span><br />
<br /></div>
Steve Wellshttp://www.blogger.com/profile/01339934094836773506noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-65223201596351812712018-01-28T11:19:00.000-08:002018-01-28T11:49:32.531-08:00Java - Very basic and simple bicycle Part's inventory database application.<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<div style="text-align: left;">
BicyclePart.java<br />
<div style="text-align: left;">
<br /></div>
<pre style="background-color: #2b2b2b;"><div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="color: #cc7832; font-size: 9pt;">package </span><span style="font-size: 9pt;">com.masoomyf</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "Courier New"; font-size: 12px;">
</span></div>
<span style="color: #629755; font-family: "Courier New"; font-size: 9pt; font-style: italic;"><div style="text-align: left;">
<span style="font-size: 9pt;">/**</span></div>
</span><span style="color: #629755; font-family: "Courier New"; font-size: 9pt; font-style: italic;"><div style="text-align: left;">
<span style="font-size: 9pt;"> * com.masoomyf created by masoomyf on 28-01-2018.</span></div>
</span><span style="color: #629755; font-family: "Courier New"; font-size: 9pt; font-style: italic;"><div style="text-align: left;">
<span style="font-size: 9pt;"> */</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;">//Class for bicycle parts, its attributes.</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;">public class </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart {</span></div>
</span><span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For storing part number.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public long </span><span style="color: #9876aa; font-size: 9pt;">id</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For storing part name.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public </span><span style="color: #a9b7c6; font-size: 9pt;">String </span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For storing list price.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public double </span><span style="color: #9876aa; font-size: 9pt;">listPrice</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For storing sale price.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public double </span><span style="color: #9876aa; font-size: 9pt;">salePrice</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For storing onSale whether true or false.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public boolean </span><span style="color: #9876aa; font-size: 9pt;">onSale</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For storing quantity.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public int </span><span style="color: #9876aa; font-size: 9pt;">quantity</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "Courier New"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "Courier New"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Constructor.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public </span><span style="color: #ffc66d; font-size: 9pt;">BicyclePart</span><span style="color: #a9b7c6; font-size: 9pt;">(</span><span style="color: #cc7832; font-size: 9pt;">long </span><span style="color: #a9b7c6; font-size: 9pt;">id</span><span style="color: #cc7832; font-size: 9pt;">, </span><span style="color: #a9b7c6; font-size: 9pt;">String name</span><span style="color: #cc7832; font-size: 9pt;">, double </span><span style="color: #a9b7c6; font-size: 9pt;">listPrice</span><span style="color: #cc7832; font-size: 9pt;">, double </span><span style="color: #a9b7c6; font-size: 9pt;">sellPrice</span><span style="color: #cc7832; font-size: 9pt;">, boolean </span><span style="color: #a9b7c6; font-size: 9pt;">onSale</span><span style="color: #cc7832; font-size: 9pt;">,int </span><span style="color: #a9b7c6; font-size: 9pt;">quantity) {</span></div>
</span><span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Initialize of new Object Bicycle part</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //with the given value.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">this</span><span style="color: #a9b7c6; font-size: 9pt;">.</span><span style="color: #9876aa; font-size: 9pt;">id </span><span style="color: #a9b7c6; font-size: 9pt;">= id</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> this</span><span style="color: #a9b7c6; font-size: 9pt;">.</span><span style="color: #9876aa; font-size: 9pt;">name </span><span style="color: #a9b7c6; font-size: 9pt;">= name</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> this</span><span style="color: #a9b7c6; font-size: 9pt;">.</span><span style="color: #9876aa; font-size: 9pt;">listPrice </span><span style="color: #a9b7c6; font-size: 9pt;">= listPrice</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> this</span><span style="color: #a9b7c6; font-size: 9pt;">.</span><span style="color: #9876aa; font-size: 9pt;">salePrice </span><span style="color: #a9b7c6; font-size: 9pt;">= sellPrice</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> this</span><span style="color: #a9b7c6; font-size: 9pt;">.</span><span style="color: #9876aa; font-size: 9pt;">onSale </span><span style="color: #a9b7c6; font-size: 9pt;">= onSale</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> this</span><span style="color: #a9b7c6; font-size: 9pt;">.</span><span style="color: #9876aa; font-size: 9pt;">quantity </span><span style="color: #a9b7c6; font-size: 9pt;">= quantity</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//It will take string line like: akjs,1234567890,12.2,52.3,false,10 and</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //convert it to bicycle object by splitting it with comma</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //We use static here to call it directly without creating BicyclePart object.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //and will crete new Bicycle part and return it.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public static </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart </span><span style="color: #ffc66d; font-size: 9pt;">getPartFromString</span><span style="color: #a9b7c6; font-size: 9pt;">(String string){</span></div>
</span><span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//split function split the string and give its array.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //string example: akjs,1234567890,12.2,52.3,false,10</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //ajks stores in 0 index, 1234567890 stores in 1 index and so on after splitting.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String[] parts = string.split(</span><span style="color: #6a8759; font-size: 9pt;">","</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "Courier New"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Creating new object with the split array and return it.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Long.parseLong or Interger.parseInt or any other use to convert string object</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //in the appropriate data type.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">return new </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart(Long.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">parseLong</span><span style="color: #a9b7c6; font-size: 9pt;">(parts[</span><span style="color: #6897bb; font-size: 9pt;">1</span><span style="color: #a9b7c6; font-size: 9pt;">])</span><span style="color: #cc7832; font-size: 9pt;">, </span><span style="color: #a9b7c6; font-size: 9pt;">parts[</span><span style="color: #6897bb; font-size: 9pt;">0</span><span style="color: #a9b7c6; font-size: 9pt;">]</span><span style="color: #cc7832; font-size: 9pt;">,</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">Double.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">parseDouble</span><span style="color: #a9b7c6; font-size: 9pt;">(parts[</span><span style="color: #6897bb; font-size: 9pt;">2</span><span style="color: #a9b7c6; font-size: 9pt;">])</span><span style="font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">Double.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">parseDouble</span><span style="color: #a9b7c6; font-size: 9pt;">(parts[</span><span style="color: #6897bb; font-size: 9pt;">3</span><span style="color: #a9b7c6; font-size: 9pt;">])</span><span style="font-size: 9pt;">,</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">Boolean.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">parseBoolean</span><span style="color: #a9b7c6; font-size: 9pt;">(parts[</span><span style="color: #6897bb; font-size: 9pt;">4</span><span style="color: #a9b7c6; font-size: 9pt;">])</span><span style="font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">Integer.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">parseInt</span><span style="color: #a9b7c6; font-size: 9pt;">(parts[</span><span style="color: #6897bb; font-size: 9pt;">5</span><span style="color: #a9b7c6; font-size: 9pt;">]))</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public </span><span style="font-size: 9pt;">String </span><span style="color: #ffc66d; font-size: 9pt;">toString</span><span style="font-size: 9pt;">(){</span></div>
</span><span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//just return all the attribute, with comma between them,</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //to save it in database txt file.</span></div>
</span><span style="color: grey; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">return </span><span style="color: #9876aa; font-size: 9pt;">name </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #6a8759; font-size: 9pt;">"," </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #9876aa; font-size: 9pt;">id </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #6a8759; font-size: 9pt;">"," </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #9876aa; font-size: 9pt;">listPrice </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #6a8759; font-size: 9pt;">"," </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #9876aa; font-size: 9pt;">salePrice </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #6a8759; font-size: 9pt;">"," </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #9876aa; font-size: 9pt;">onSale</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;">}</span></div>
</span></pre>
<div style="text-align: left;">
<br /></div>
Main.java<br />
<div style="text-align: left;">
<br /></div>
<pre style="background-color: #2b2b2b;"><div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="color: #cc7832; font-size: 9pt;">package </span><span style="font-size: 9pt;">com.masoomyf</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;">import </span><span style="color: #a9b7c6; font-size: 9pt;">java.io.*</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;">import </span><span style="color: #a9b7c6; font-size: 9pt;">java.util.*</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;">public class </span><span style="color: #a9b7c6; font-size: 9pt;">Main {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//To store all bicycle parts.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static </span><span style="color: #a9b7c6; font-size: 9pt;">ArrayList<BicyclePart> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//flag if changes is made in database or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //if yes save it.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static boolean </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated </span><span style="color: #a9b7c6; font-size: 9pt;">= </span><span style="color: #cc7832; font-size: 9pt;">false;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//main database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static </span><span style="color: #a9b7c6; font-size: 9pt;">File </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> public static void </span><span style="color: #ffc66d; font-size: 9pt;">main</span><span style="color: #a9b7c6; font-size: 9pt;">(String[] args) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//initialize new ArrayList.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Array list is use instead of array because it is expandable as</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //well as it will collapse after deleting object.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts </span><span style="color: #a9b7c6; font-size: 9pt;">= </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">ArrayList<>()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Creating File object of database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile </span><span style="color: #a9b7c6; font-size: 9pt;">= </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">File(</span><span style="color: #6a8759; font-size: 9pt;">"wareHouseDb.txt"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//for reading user input.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">Scanner inputReader = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">Scanner(System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">in</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now check database file exists or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //If there is no Bicycle parts in database, or user run it first time</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Its return false, because there will be no database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile</span><span style="color: #a9b7c6; font-size: 9pt;">.exists()){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">// file is exists, try to read it.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">try </span><span style="color: #a9b7c6; font-size: 9pt;">{</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//reading main file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Creating file input stream to read file. and passing File object</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //of database txt file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">FileInputStream inputStream = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">FileInputStream(</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Creating buffered reader for file input stream.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //It's allow to read file line by line and many more options.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //but we need only to read line by line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">BufferedReader reader = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">BufferedReader(</span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">InputStreamReader(inputStream))</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Creating String line, for storing each line of database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String line</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//loop until there is no new line available in database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //If there is no new line its return null and while loop breaks.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">while </span><span style="color: #a9b7c6; font-size: 9pt;">((line=reader.readLine())!=</span><span style="color: #cc7832; font-size: 9pt;">null</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//check whether line is empty or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //if line is empty get next line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(line.isEmpty()){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">continue;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If line is not empty perform the following.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //get new line from file and add it to bicycle.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //create new bicycle part and add it to arrayList.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart bicyclePart = BicyclePart.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">getPartFromString</span><span style="color: #a9b7c6; font-size: 9pt;">(line)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">.add(bicyclePart)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span><span style="color: #cc7832; font-size: 9pt;">catch </span><span style="font-size: 9pt;">(Exception ignore){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If we get any error during reading file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //output error message.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Cant read ware house database."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now display these option, until user write quit.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">while </span><span style="color: #a9b7c6; font-size: 9pt;">(</span><span style="color: #cc7832; font-size: 9pt;">true</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//It will useful when user chooses an option another that quit,</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //It allow user to read the previous message of console.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Press any key to continue....."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//It will not continue until user press any button and enter.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//User pressed enter, it means user read the previous information.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Now display menu again(or first time).</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Please select your option from the following menu:"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Read: Read an inventory delivery file"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Enter: Enter a part"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Sell: Sell a part"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Display: Display a part"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"SortName: Sort parts by part name"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"SortNumber: Sort parts by part number"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Quit:"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Enter your choice: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now read the choice of user.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String choice = inputReader.nextLine()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//According to choice call the appropriate option.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"read"</span><span style="color: #a9b7c6; font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="font-size: 9pt; font-style: italic;">readFile</span><span style="font-size: 9pt;">(inputReader)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else if</span><span style="font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"enter"</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="font-size: 9pt; font-style: italic;">enterPart</span><span style="font-size: 9pt;">(inputReader)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else if</span><span style="font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"sell"</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="font-size: 9pt; font-style: italic;">sellPart</span><span style="font-size: 9pt;">(inputReader)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else if</span><span style="font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"display"</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="font-size: 9pt; font-style: italic;">displayPart</span><span style="font-size: 9pt;">(inputReader)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else if</span><span style="font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"sortName"</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="font-size: 9pt; font-style: italic;">sortByName</span><span style="font-size: 9pt;">()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else if</span><span style="font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"sortNumber"</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="font-size: 9pt; font-style: italic;">sortByNumber</span><span style="font-size: 9pt;">()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else if</span><span style="font-size: 9pt;">(choice.equalsIgnoreCase(</span><span style="color: #6a8759; font-size: 9pt;">"quit"</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If user select quit.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //save the database and break the loop.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">saveDatabase</span><span style="color: #a9b7c6; font-size: 9pt;">()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> break;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">else </span><span style="font-size: 9pt;">{</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If user writes another option other than provided menu.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Give this error.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Invalid option chosen."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Reading file inventory.txt.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Passing scanner here, so we don't need to create again a new scanner.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">readFile</span><span style="color: #a9b7c6; font-size: 9pt;">(Scanner inputReader) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//prompt user to enter file name i.e. inventory.txt.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Enter file name to read from: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//read the fileName.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String fileName = inputReader.nextLine()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Pass the filename to new File object.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //It will allow to check whether file is exists or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">File file = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">File(fileName)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If file not exists display error message and return from this method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(!file.exists()){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Error: File not exists."</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> return;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If file exists try the following.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">try </span><span style="color: #a9b7c6; font-size: 9pt;">{</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Create a new scanner by passing file object of inventory.txt</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //You can choose buffered reader also.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Just learn new thing.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">Scanner fileReader = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">Scanner(file)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Marking this line as nextLine.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //For future use.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">nextLine:</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//check if there is new line by looping.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">while </span><span style="color: #a9b7c6; font-size: 9pt;">(fileReader.hasNextLine()){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//New line present, read the new line and store it into line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String line = fileReader.nextLine()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now create a new Bicycle part.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart temp = BicyclePart.</span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">getPartFromString</span><span style="color: #a9b7c6; font-size: 9pt;">(line)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now check, if this part exists in bicycleArrayList(database)</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //by comparing the temp part number with every bicycle part's number</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //store in array list(database)</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart bicyclePart:</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Check if bicycle part is present or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(temp.</span><span style="color: #9876aa; font-size: 9pt;">id</span><span style="color: #a9b7c6; font-size: 9pt;">==bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">id</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Yes present.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Update it with new details, available in temp.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">listPrice </span><span style="color: #a9b7c6; font-size: 9pt;">= temp.</span><span style="color: #9876aa; font-size: 9pt;">listPrice</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">salePrice </span><span style="color: #a9b7c6; font-size: 9pt;">= temp.</span><span style="color: #9876aa; font-size: 9pt;">salePrice</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">onSale </span><span style="color: #a9b7c6; font-size: 9pt;">= temp.</span><span style="color: #9876aa; font-size: 9pt;">onSale</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Add the quantity.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">quantity </span><span style="color: #a9b7c6; font-size: 9pt;">+= temp.</span><span style="color: #9876aa; font-size: 9pt;">quantity</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Flag the databaseUpdated to true.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //means save the database on exit, because it gets changed.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated </span><span style="color: #a9b7c6; font-size: 9pt;">= </span><span style="color: #cc7832; font-size: 9pt;">true;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//we use continue nextLine here because if we use only</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //continue, for loop get's continue, and we don't it.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //so just skip the for loop and continue the while loop</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //without executing the below lines.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Below line is for new part's that are not available</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //in our database.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">continue </span><span style="color: #a9b7c6; font-size: 9pt;">nextLine</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If there is no part that matches the temp, that's mean</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //part is new and add it to database.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">.add(temp)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Flag the databaseUpdated to true.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //means save the database on exit, because it gets changed.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated</span><span style="color: #a9b7c6; font-size: 9pt;">=</span><span style="color: #cc7832; font-size: 9pt;">true;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span><span style="color: #cc7832; font-size: 9pt;">catch </span><span style="font-size: 9pt;">(Exception e){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If something happen wrong, output the error.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Error: " </span><span style="color: #a9b7c6; font-size: 9pt;">+ e.getMessage())</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">enterPart</span><span style="font-size: 9pt;">(Scanner inputReader) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Prompt and read all parts info from user.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Enter part name: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String name = inputReader.nextLine()</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Below extra inputReader.nextLine is used because, we read a datatype</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //other than string.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //If we don't call extra nextLine method, after reading this if we read a</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //string, it will give us a new line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Example: we have to read an integer.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //we use inputReader.nextInteger().</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //After that user write 45 or any number and press enter.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //45 passed to caller, and enter remains in scanner, and we try to read new</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //line in future, it will just pass the enter which is in scanner.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //rather than wait for a new string user will enter.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Enter part number: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> long </span><span style="color: #a9b7c6; font-size: 9pt;">id = inputReader.nextLong()</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Enter list price: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> double </span><span style="color: #a9b7c6; font-size: 9pt;">listPrice = inputReader.nextDouble()</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Enter sell price: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> double </span><span style="color: #a9b7c6; font-size: 9pt;">salePrice = inputReader.nextDouble()</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Part is on sale? [true/false]: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> boolean </span><span style="color: #a9b7c6; font-size: 9pt;">onSale = inputReader.nextBoolean()</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Enter quantity: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> int </span><span style="color: #a9b7c6; font-size: 9pt;">quantity = inputReader.nextInt()</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now first check if bicycle part enter by user is present</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //in database or not. If yes update it and stop the method execution.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart bicyclePart: </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="font-size: 9pt;">(bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">id </span><span style="font-size: 9pt;">== id){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">listPrice </span><span style="font-size: 9pt;">= listPrice</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">salePrice </span><span style="color: #a9b7c6; font-size: 9pt;">= salePrice</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">onSale </span><span style="color: #a9b7c6; font-size: 9pt;">= onSale</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">quantity </span><span style="color: #a9b7c6; font-size: 9pt;">+= quantity</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Bicycle part updated."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated </span><span style="color: #a9b7c6; font-size: 9pt;">= </span><span style="font-size: 9pt;">true;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> return;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If not add the new part to database.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart bicyclePart = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart(id</span><span style="color: #cc7832; font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">name</span><span style="color: #cc7832; font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">listPrice</span><span style="color: #cc7832; font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">salePrice</span><span style="color: #cc7832; font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">onSale</span><span style="color: #cc7832; font-size: 9pt;">,</span><span style="color: #a9b7c6; font-size: 9pt;">quantity)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">.add(bicyclePart)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"New bicycle part is added."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated </span><span style="color: #a9b7c6; font-size: 9pt;">= </span><span style="font-size: 9pt;">true;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For selling part.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">sellPart</span><span style="color: #a9b7c6; font-size: 9pt;">(Scanner inputReader) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Enter part number: "</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Get the partNumber.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">long </span><span style="color: #a9b7c6; font-size: 9pt;">partNumber = inputReader.nextLong()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Remove the extra enter comes with long.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">inputReader.nextLine()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Check part enter by user is present in database or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart part: </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="font-size: 9pt;">(partNumber == part.</span><span style="color: #9876aa; font-size: 9pt;">id</span><span style="font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//if yes call sellPart(BicyclePart),</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //this method is also sellPart but with different signature</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //i.e. sellPart(Scanner).</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">sellPart</span><span style="color: #a9b7c6; font-size: 9pt;">(part)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//and stop executing this method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">return;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If part is present then this line never execute.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //If not present, this line will execute.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //And show error message.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Error: Bicycle part not exists."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">sellPart</span><span style="font-size: 9pt;">(BicyclePart part){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//check quantity is not less than one.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //if yes give the error and stop execution of this method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(part.</span><span style="color: #9876aa; font-size: 9pt;">quantity </span><span style="color: #a9b7c6; font-size: 9pt;">< </span><span style="color: #6897bb; font-size: 9pt;">1</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Error: No quantity left."</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> return;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//If quantity is more than zero(means available)</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Print the part name and its cost.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Part Name: " </span><span style="color: #a9b7c6; font-size: 9pt;">+ part.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">// here tertiary operator is used for taking decision in line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> // (true|false ? if true : if false)</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Part Cost: " </span><span style="color: #a9b7c6; font-size: 9pt;">+ (part.</span><span style="color: #9876aa; font-size: 9pt;">onSale</span><span style="color: #a9b7c6; font-size: 9pt;">?part.</span><span style="color: #9876aa; font-size: 9pt;">salePrice</span><span style="color: #a9b7c6; font-size: 9pt;">:part.</span><span style="color: #9876aa; font-size: 9pt;">listPrice</span><span style="color: #a9b7c6; font-size: 9pt;">))</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> if</span><span style="color: #a9b7c6; font-size: 9pt;">(part.</span><span style="color: #9876aa; font-size: 9pt;">onSale</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Part is on sale."</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Display the current date.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Sold Time: " </span><span style="color: #a9b7c6; font-size: 9pt;">+ </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">Date().toString())</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//decrease the part quantity.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">part.</span><span style="color: #9876aa; font-size: 9pt;">quantity</span><span style="color: #a9b7c6; font-size: 9pt;">--</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//change the flag to true.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //if it changes by another method, no problem.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated</span><span style="color: #a9b7c6; font-size: 9pt;">=</span><span style="color: #cc7832; font-size: 9pt;">true;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//For displaying part.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">displayPart</span><span style="color: #a9b7c6; font-size: 9pt;">(Scanner inputReader) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.print(</span><span style="color: #6a8759; font-size: 9pt;">"Enter part name: "</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//read part name.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //here no extra inputReader.nextLine() is use because string is read.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //it automatically read the string with new line and omit it.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">String partName = inputReader.nextLine()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//loop through database bicycle array list and check whether part name</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //is available or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart part: </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="font-size: 9pt;">(partName.equalsIgnoreCase(part.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="font-size: 9pt;">)){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//if available call displayPart(BicyclePart) method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt; font-style: italic;">displayPart</span><span style="color: #a9b7c6; font-size: 9pt;">(part)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//return.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">return;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//if no part is available display the error.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Error: Bicycle part not exists."</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//simple displayPart method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">displayPart</span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart part) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Part Name: " </span><span style="font-size: 9pt;">+ part.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Part Cost: " </span><span style="color: #a9b7c6; font-size: 9pt;">+ (part.</span><span style="color: #9876aa; font-size: 9pt;">onSale</span><span style="color: #a9b7c6; font-size: 9pt;">?part.</span><span style="color: #9876aa; font-size: 9pt;">salePrice</span><span style="color: #a9b7c6; font-size: 9pt;">:part.</span><span style="color: #9876aa; font-size: 9pt;">listPrice</span><span style="color: #a9b7c6; font-size: 9pt;">))</span><span style="font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//sortByName method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">sortByName</span><span style="color: #a9b7c6; font-size: 9pt;">() {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//sort the arraylist with the help of new Comparator.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //java has compare option for datatype pre-defined in java,</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //If we create a new datatype(i.e. class), we have to implement and override the compare</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">.sort(</span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">Comparator<BicyclePart>() {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #bbb529; font-size: 9pt;">@Override</span></div>
</span><span style="color: #bbb529; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public int </span><span style="color: #ffc66d; font-size: 9pt;">compare</span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart o1</span><span style="color: #cc7832; font-size: 9pt;">, </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart o2) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Compare the Bicycle Name with another one.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Java has string compare method.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //so we use here and return the compare value to Comparator.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">return </span><span style="color: #a9b7c6; font-size: 9pt;">o1.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="color: #a9b7c6; font-size: 9pt;">.compareToIgnoreCase(o2.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> })</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Now simply print all parts avail in database.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Sorted part names: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart bicyclePart: </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//same as above but, here only change is that arraylist is sort by it's part number</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">sortByNumber</span><span style="color: #a9b7c6; font-size: 9pt;">() {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="font-size: 9pt;">.sort(</span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="font-size: 9pt;">Comparator<BicyclePart>() {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #bbb529; font-size: 9pt;">@Override</span></div>
</span><span style="color: #bbb529; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Compare with part number.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">public int </span><span style="color: #ffc66d; font-size: 9pt;">compare</span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart o1</span><span style="color: #cc7832; font-size: 9pt;">, </span><span style="color: #a9b7c6; font-size: 9pt;">BicyclePart o2) {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">return </span><span style="font-size: 9pt;">Long.</span><span style="font-size: 9pt; font-style: italic;">compare</span><span style="font-size: 9pt;">(o1.</span><span style="color: #9876aa; font-size: 9pt;">id</span><span style="color: #cc7832; font-size: 9pt;">,</span><span style="font-size: 9pt;">o2.</span><span style="color: #9876aa; font-size: 9pt;">id</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> })</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Print the sorted arrayList.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="color: #a9b7c6; font-size: 9pt;">.println(</span><span style="color: #6a8759; font-size: 9pt;">"Sorted part names: "</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart bicyclePart: </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> System.</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">out</span><span style="font-size: 9pt;">.println(bicyclePart.</span><span style="color: #9876aa; font-size: 9pt;">name</span><span style="font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><div style="color: #a9b7c6; font-family: "Courier New"; font-size: 9pt; text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">private static void </span><span style="color: #ffc66d; font-size: 9pt;">saveDatabase</span><span style="font-size: 9pt;">() {</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Check databaseUpdated flag.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //If it is false, means no method execute which change the current database.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //Therefore no need to save it.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //return back.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(!</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">databaseUpdated</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">return;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//if it is true. write it to file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //first write it to temp file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //then delete the old database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //after that rename the temp file to database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">try </span><span style="color: #a9b7c6; font-size: 9pt;">{</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//Create file output stream to write the data.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">FileOutputStream outputStream = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">FileOutputStream(</span><span style="color: #6a8759; font-size: 9pt;">"temp.txt"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//create buffered writer to write line by line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">BufferedWriter writer = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">BufferedWriter(</span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">OutputStreamWriter(outputStream))</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//loop through all part available in array list(database)</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">for </span><span style="color: #a9b7c6; font-size: 9pt;">(BicyclePart bicyclePart:</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">bicycleParts</span><span style="color: #a9b7c6; font-size: 9pt;">){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//write the bicycle part to file follow with a new line.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //bicycle.toString is defined in BicyclePart.java</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //which gives whole thing in string with comma seperator.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">writer.write(bicyclePart.toString() + </span><span style="color: #6a8759; font-size: 9pt;">"</span><span style="color: #cc7832; font-size: 9pt;">\n</span><span style="color: #6a8759; font-size: 9pt;">"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//close the writer.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">writer.close()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//close output stream.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">outputStream.close()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//check if the old database file actually exists or not.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> //if exists delete it.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #cc7832; font-size: 9pt;">if</span><span style="color: #a9b7c6; font-size: 9pt;">(</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile</span><span style="color: #a9b7c6; font-size: 9pt;">.exists())</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile</span><span style="font-size: 9pt;">.delete()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//create a file object with name temp.txt</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">File file = </span><span style="color: #cc7832; font-size: 9pt;">new </span><span style="color: #a9b7c6; font-size: 9pt;">File(</span><span style="color: #6a8759; font-size: 9pt;">"temp.txt"</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//rename it to database file.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">file.renameTo(</span><span style="color: #9876aa; font-size: 9pt; font-style: italic;">wareHouseFile</span><span style="color: #a9b7c6; font-size: 9pt;">)</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span><span style="font-size: 9pt;">catch </span><span style="color: #a9b7c6; font-size: 9pt;">(Exception ignore){</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: grey; font-size: 9pt;">//rise error if anything happens wrong.</span></div>
</span><span style="color: grey; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">ignore.printStackTrace()</span><span style="color: #cc7832; font-size: 9pt;">;</span></div>
</span><div style="text-align: left;">
<span style="color: #cc7832; font-family: "courier new"; font-size: 12px;">
</span></div>
<span style="color: #cc7832; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> </span><span style="color: #a9b7c6; font-size: 9pt;">}</span></div>
</span><span style="color: #a9b7c6; font-family: "courier new"; font-size: 9pt;"><div style="text-align: left;">
<span style="font-size: 9pt;"> }</span></div>
<div style="text-align: left;">
<span style="font-size: 9pt;">}</span></div>
</span></pre>
</div>
</div>
</div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-9405550529099750882017-07-05T22:27:00.006-07:002017-07-05T22:27:54.547-07:00Tricky Aptitude Questions #1 <div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>How many months during this year can have twenty eight days ?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><b><br /></b></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">12 months because all months are have 28 days but feb only have total 28 days in this mnth remaining all months have 28th day and more</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered By: Thooti Santosh)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>The product of two numbers is 2025 and their HCF is 15 their LCM is?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">The formula known to me is LCM*HCF=a*b (a and b are the numbers in çonsideration) Thus, LCM*15=2025 LCM=2025/15 LCM=135. Correct me if I am wrong!!</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Shantanu Sikdar)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>Why is a <a href="https://en.wikipedia.org/wiki/Manhole" rel="nofollow" target="_blank">manhole</a> cover round?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">A round manhole cover cannot fall through its circular opening, whereas a square manhole cover could fall in if it were inserted diagonally in the hole. Circular covers don't need to be rotated or precisely aligned when placing them on the opening. A round manhole cover is easily moved and rolled.</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Rakesh Sharma)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">A man can enter or get out of it in any position, The lid will not fall inside the hole.The lid can be opened or closed without much difficulty, Even preparing the hole or its lid is easy.</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Abdul Azeez)</i></span><br />
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b><br /></b></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>Calculate the angle of two clock pointers when time is 11:50?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Angle Between every Number = 360/12 = 30 Degrees 11.50 Means, as a general view... Angle between Minute & Hour Needle is 30 Degrees. But, When Hour Needle will slightly reach to 12 to become 12 O'Clock. It moves 30/12 = 2.5 Degrees for every 5 Minutes.. 50 minutes means 25 Degrees.</span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">So Totally, 30 + 25 = 55 Degrees is the distance between Hours & Minutes Needle in in the clock at 11.50</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Satish Kumar)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>How many basketballs would fit in this room?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">In a ROOM I think can fit only 2 basket balls. Becoz in the word 'ROOM' the 'OO' only spaces to fit balls. In R,M we can't fit balls</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Devadas A N)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif;"><a href="/2017/07/carziest-question-for-hr-round.html" target="_blank">Read here craziest interview questions.</a></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<br /></div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-70185957984002594792017-07-05T21:45:00.002-07:002017-07-05T21:45:21.079-07:00Carziest Question For HR Round Interview 2017 #1<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: #0b5394; font-family: Georgia, Times New Roman, serif;"><b>What will you do if our competitor offered you a higher salary?</b></span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Salary is not the bottom line. My professional growth in the present company and the faith my employer has in me is more important. Jumping jacks do not go far</span><br />
<i style="font-family: Georgia, "Times New Roman", serif;">(Answered by: Pyarali Bhimani)</i><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">This shows that they got scared from our companies employee n their talent and th most imp thing s they dont trust thier employees,so why wud i join it may be in near future they heir some1 else in place of me.Their is no surity of stability n trust.Organizations' head shud trust their employees n respect their talent n motivate them.</span><br />
<span style="font-family: Georgia, "Times New Roman", serif;"><i>(Answered by: Radha Rani)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>If I gave you a billion dollars, what would you do with it?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">what is your salary expctation</span><br />
<span style="font-family: Georgia, "Times New Roman", serif;"><i>(Answered by: Sanjib Karmakar)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">It's like a dream but if i will have billions dollar first of all i will spend this money to make companies and factories. The benifits of company is that many people can get jobs from there and rest of amount i will spend on the poor child for higher education and food after get education they can work for me and i can make from billion to trillion and more child can get education for free and definately i will return your bilions dollar thanks</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Simarjeet Singh)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>If I were to hire you for this job and I granted you three promises with regard to working here, what would they be?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">1st. Don't make promise get me authentic letter. Rest a good salary package in what i am convinced to work for you mentioned in the authentic job offer letter.</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Mohin Shah)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">Salary in Time. Freedom to work. regular appraisal</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><i>(Answered by: Stanley Susai)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #073763; font-family: Georgia, Times New Roman, serif;"><b>There are many instance in a day when minute needle and hour needle of a clock comes in a straight line?</b></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">24 time's</span><br />
<span style="font-family: Georgia, "Times New Roman", serif;"><i>(Answered by: Rupali Kale)</i></span><br />
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #444444; font-family: Georgia, Times New Roman, serif;">22 times. 11 times in every 12 hours.</span><br />
<span style="font-family: Georgia, "Times New Roman", serif;"><i>(Answered by: Ankita Garg)</i></span><br />
<div>
<span style="font-family: Georgia, Times New Roman, serif;"><br /></span></div>
<div>
<span style="color: #666666; font-family: Georgia, Times New Roman, serif;">#src: timesjob.com</span></div>
<br /></div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com1tag:blogger.com,1999:blog-4152442290256220593.post-44611757644433131282017-05-06T05:12:00.002-07:002017-05-06T05:12:46.648-07:009. Java Operators<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf_8614lS2dd4UhvTc6vETcqfTNWpWUKGMxIfs0rr1eolhzv56yaQBzTw97z9m5m9WUAicDlAbSdnuks0FChE-3gyeyT5y8oLe7yTO-GD5uOcfzN3hwHsNZI4KBWacTqVOsx1Tr1-yIqP8/s1600/operator.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Java Operators Flow Chart" border="0" height="436" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf_8614lS2dd4UhvTc6vETcqfTNWpWUKGMxIfs0rr1eolhzv56yaQBzTw97z9m5m9WUAicDlAbSdnuks0FChE-3gyeyT5y8oLe7yTO-GD5uOcfzN3hwHsNZI4KBWacTqVOsx1Tr1-yIqP8/s640/operator.jpg" title="Java Operators Flow Chart" width="640" /></a></div>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif; font-size: large;"><b><br /></b></span>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif; font-size: large;"><b>What is Java Operators?</b></span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Operators are special symbols that perform specific operations on one, two, or three operands, and then return a result. As we explore the operators of the Java programming language, it may be helpful for you to know ahead of time which operators have the highest precedence.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Java provides rich set of operators to manipulates variable. Operators can be divided into following groups:-</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Arithmetic Operator</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Relational Operator</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Bitwise Operator</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Logical Operator</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Assignment Operator</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Misc Operator<a name='more'></a></span></li>
</ul>
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u>1. Arithmetic Operator</u></b></span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Arithmetic Operator is used to perform mathematical calculation. Arithmetic operators are used in mathematical expressions in the same way that they are used in algebra. </span></div>
<div>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<br />
<table class="table table-bordered" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #313131; font-family: Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 20px; max-width: 100%; width: 604px;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Operator</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Description</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Example</th></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle; width: 180px;">+ (Addition)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top; width: 241px;">Adds values on either side of the operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">A + B will give 30</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">- (Subtraction)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Subtracts right-hand operand from left-hand operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">A - B will give -10</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">* (Multiplication)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Multiplies values on either side of the operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">A * B will give 200</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">/ (Division)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Divides left-hand operand by right-hand operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">B / A will give 2</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">% (Modulus)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Divides left-hand operand by right-hand operand and returns remainder.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">B % A will give 0</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">++ (Increment)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Increases the value of operand by 1.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">B++ gives 21</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">-- (Decrement)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Decreases the value of operand by 1.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">B-- gives 19</td></tr>
</tbody></table>
<div>
</div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u>2. Relational Operator</u></b></span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Relation operator is used to check the relation between two operands( i.e. operand1 is equal to/ not equal to/ greater than/ smaller than operand2)</span></div>
<div>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u><br /></u></b></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<table class="table table-bordered" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #313131; font-family: Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 20px; max-width: 100%; width: 604px;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 145px;">Operator</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 290px;">Description</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 168px;">Example</th></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">== (equal to)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Checks if the values of two operands are equal or not, if yes then condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A == B) is not true.</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">!= (not equal to)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Checks if the values of two operands are equal or not, if values are not equal then condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A != B) is true.</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">> (greater than)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A > B) is not true.</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">< (less than)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A < B) is true.</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">>= (greater than or equal to)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A >= B) is not true.</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;"><= (less than or equal to)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A <= B) is true.</td></tr>
</tbody></table>
</div>
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">3. Bitwise Operator</span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">The Java programming language also provides operators that perform bitwise and bit shift operations on integral types. The operators discussed in this section are less commonly used. Therefore, their coverage is brief; the intent is to simply make you aware that these operators exist.</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Java defines several bitwise operators, which can be applied to the integer types, long, int, short, char, and byte.</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Bitwise operator works on bits and performs bit-by-bit operation. Assume if a = 60 and b = 13; now in binary format they will be as follows −</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;">a = 0011 1100</span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;">b = 0000 1101</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;">a&b = 0000 1100</span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;">a|b = 0011 1101</span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;">a^b = 0011 0001</span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;">~a = 1100 0011</span></div>
</div>
<div>
<br /></div>
<div style="text-align: left;">
<table class="table table-bordered" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #313131; font-family: Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 20px; max-width: 100%; width: 604px;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Operator</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Description</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Example</th></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle; width: 151px;">& (bitwise and)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle; width: 271px;">Binary AND Operator copies a bit to the result if it exists in both operands.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle; width: 181px;">(A & B) will give 12 which is 0000 1100</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">| (bitwise or)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Binary OR Operator copies a bit if it exists in either operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A | B) will give 61 which is 0011 1101</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">^ (bitwise XOR)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Binary XOR Operator copies the bit if it is set in one operand but not both.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A ^ B) will give 49 which is 0011 0001</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">~ (bitwise compliment)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Binary Ones Complement Operator is unary and has the effect of 'flipping' bits.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(~A ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary number.</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;"><< (left shift)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">A << 2 will give 240 which is 1111 0000</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">>> (right shift)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">A >> 2 will give 15 which is 1111</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">>>> (zero fill right shift)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Shift right zero fill operator. The left operands value is moved right by the number of bits specified by the right operand and shifted values are filled up with zeros.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">A >>>2 will give 15 which is 0000 1111</td></tr>
</tbody></table>
<h3>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">4. Logical Operato</span><span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">r</span></h3>
</div>
<div>
<br /></div>
<div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">A logical operator in Java programming is an operator that returns a Boolean result that’s based on the Boolean result of one or two other expressions.</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Sometimes, expressions that use logical operators are called “compound expressions” because the effect of the logical operators is to let you combine two or more condition tests into a single expression.</span></div>
</div>
<div>
<br /></div>
<div style="text-align: left;">
<table class="table table-bordered" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #313131; font-family: Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 20px; max-width: 100%; width: 604px;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 138px;">Operator</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Description</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 144px;">Example</th></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">&& (logical and)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Called Logical AND operator. If both the operands are non-zero, then the condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A && B) is false</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">|| (logical or)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Called Logical OR Operator. If any of the two operands are non-zero, then the condition becomes true.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">(A || B) is true</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">! (logical not)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">!(A && B) is true</td></tr>
</tbody></table>
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">5. Assignment Operator</span></h3>
</div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Assignment operator is used to assign/modify values to a variable.</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div style="text-align: left;">
<table class="table table-bordered" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #313131; font-family: Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 20px; max-width: 100%; width: 604px;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Operator</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 301px;">Description</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Example</th></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Simple assignment operator. Assigns values from right side operands to left side operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C = A + B will assign value of A + B into C</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">+=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Add AND assignment operator. It adds right operand to the left operand and assign the result to left operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C += A is equivalent to C = C + A</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">-=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Subtract AND assignment operator. It subtracts right operand from the left operand and assign the result to left operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C -= A is equivalent to C = C – A</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">*=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Multiply AND assignment operator. It multiplies right operand with the left operand and assign the result to left operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C *= A is equivalent to C = C * A</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">/=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Divide AND assignment operator. It divides left operand with the right operand and assign the result to left operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C /= A is equivalent to C = C / A</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">%=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Modulus AND assignment operator. It takes modulus using two operands and assign the result to left operand.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C %= A is equivalent to C = C % A</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;"><<=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Left shift AND assignment operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C <<= 2 is same as C = C << 2</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">>>=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Right shift AND assignment operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C >>= 2 is same as C = C >> 2</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">&=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: middle;">Bitwise AND assignment operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C &= 2 is same as C = C & 2</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">^=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Bitwise exclusive OR and assignment operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C ^= 2 is same as C = C ^ 2</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">|=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Bitwise inclusive OR and assignment operator.</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: middle;">C |= 2 is same as C = C | 2</td></tr>
</tbody></table>
<h3>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">6. Miscellaneous Operator</span></h3>
</div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Some other operater that are supported by Java are:</span></div>
<div>
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b><u>Conditional Operator/ Ternary Operator:</u></b> This operator consists of three operands and is used to evaluate Boolean expressions. The goal of the operator is to decide, which value should be assigned to the variable.<br />Example:</span><br /><pre class="result notranslate" style="background-color: #f1f1f1; border-radius: 0px; border: 1px solid rgb(214, 214, 214); box-sizing: border-box; color: #313131; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px; overflow: auto; padding: 5px; width: 604px;">variable = (expression) ? value if true : value if false</pre>
<br /><pre class="prettyprint notranslate tryit prettyprinted" style="background: url("java/images/try-it.jpg") right top no-repeat rgb(238, 238, 238) !important; border-radius: 0px; border: 1px solid rgb(214, 214, 214); box-sizing: border-box; cursor: default; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; line-height: 16px; margin-bottom: 10px; min-height: 37px; overflow: auto; padding: 5px; width: 604px;"><span class="kwd" style="box-sizing: border-box; color: #000088;">public</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088;">class</span><span class="pln" style="box-sizing: border-box; color: #313131;"> Conditional</span><span class="typ" style="box-sizing: border-box; color: #7f0055;">Test</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="pun" style="box-sizing: border-box; color: #666600;">{</span><span class="pln" style="box-sizing: border-box; color: #313131;">
</span><span class="kwd" style="box-sizing: border-box; color: #000088;">public</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088;">static</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088;">void</span><span class="pln" style="box-sizing: border-box; color: #313131;"> main</span><span class="pun" style="box-sizing: border-box; color: #666600;">(</span><span class="typ" style="box-sizing: border-box; color: #7f0055;">String</span><span class="pln" style="box-sizing: border-box; color: #313131;"> args</span><span class="pun" style="box-sizing: border-box; color: #666600;">[])</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="pun" style="box-sizing: border-box; color: #666600;">{</span><span class="pln" style="box-sizing: border-box; color: #313131;">
</span><span class="kwd" style="box-sizing: border-box; color: #000088;">int</span><span class="pln" style="box-sizing: border-box; color: #313131;"> a</span><span class="pun" style="box-sizing: border-box; color: #666600;">,</span><span class="pln" style="box-sizing: border-box; color: #313131;"> b</span><span class="pun" style="box-sizing: border-box; color: #666600;">;</span><span class="pln" style="box-sizing: border-box; color: #313131;">
a </span><span class="pun" style="box-sizing: border-box; color: #666600;">=</span><span class="pln" style="box-sizing: border-box;"><span style="color: #313131;"> </span><span style="color: #006666;">5</span></span><span class="pun" style="box-sizing: border-box; color: #666600;">;</span><span class="pln" style="box-sizing: border-box; color: #313131;">
b </span><span class="pun" style="box-sizing: border-box; color: #666600;">=</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="pun" style="box-sizing: border-box; color: #666600;">(</span><span class="pln" style="box-sizing: border-box; color: #313131;">a </span><span class="pun" style="box-sizing: border-box; color: #666600;">==</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="lit" style="box-sizing: border-box; color: #006666;">1</span><span class="pun" style="box-sizing: border-box; color: #666600;">)</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="pun" style="box-sizing: border-box; color: #666600;">?</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="pln" style="box-sizing: border-box;"><span style="color: #006666;">10</span></span><span class="pun" style="box-sizing: border-box; color: #666600;">:</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="lit" style="box-sizing: border-box; color: #006666;">20</span><span class="pun" style="box-sizing: border-box; color: #666600;">; </span><span class="pun" style="box-sizing: border-box;"><span style="color: #999999;">// here b will assign to 20, because a==1 is false.</span></span><span class="pln" style="box-sizing: border-box; color: #313131;">
</span><span class="typ" style="box-sizing: border-box; color: #7f0055;">System</span><span class="pun" style="box-sizing: border-box; color: #666600;">.</span><span class="kwd" style="box-sizing: border-box; color: #000088;">out</span><span class="pun" style="box-sizing: border-box; color: #666600;">.</span><span class="pln" style="box-sizing: border-box; color: #313131;">println</span><span class="pun" style="box-sizing: border-box; color: #666600;">(</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="str" style="box-sizing: border-box; color: #008800;">"Value of b is : "</span><span class="pln" style="box-sizing: border-box; color: #313131;"> </span><span class="pun" style="box-sizing: border-box; color: #666600;">+</span><span class="pln" style="box-sizing: border-box; color: #313131;"> b </span><span class="pun" style="box-sizing: border-box; color: #666600;">);</span><span class="pln" style="box-sizing: border-box; color: #313131;">
</span><span class="pun" style="box-sizing: border-box; color: #666600;">}</span><span class="pln" style="box-sizing: border-box; color: #313131;">
</span><span class="pun" style="box-sizing: border-box; color: #666600;">}</span></pre>
</li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b><u>instanceof Operator:</u></b> This operator is used only for object reference variables. The operator checks whether the object is of a particular type (class type or interface type).</span></li>
</ul>
<div>
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">Precedence of Java Operators</span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Operator precedence determines the grouping of terms in an expression. This affects how an expression is evaluated. Certain operators have higher precedence than others; for example, the multiplication operator has higher precedence than the addition operator −</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">For example, x = 7 + 3 * 2; here x is assigned 13, not 20 because operator * has higher precedence than +, so it first gets multiplied with 3 * 2 and then adds into 7.</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Here, operators with the highest precedence appear at the top of the table, those with the lowest appear at the bottom. Within an expression, higher precedence operators will be evaluated first.</span></div>
</div>
</div>
<div>
<br /></div>
<div>
<table class="table table-bordered" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #313131; font-family: Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; margin-bottom: 20px; max-width: 100%; text-align: center; width: 604px;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 120px;">Category</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top;">Operator</th><th style="background: rgb(238, 238, 238); border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; text-align: center; vertical-align: top; width: 120px;">Associativity</th></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Postfix</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>() [] . (dot operator)</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left toright</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Unary</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>++ - - ! ~</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Right to left</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Multiplicative</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>* /</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Additive</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>+ -</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Shift</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>>> >>> <<</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Relational</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>> >= < <=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Equality</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>== !=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Bitwise AND</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>&</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Bitwise XOR</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>^</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Bitwise OR</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>|</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Logical AND</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>&&</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Logical OR</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>||</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Left to right</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Conditional</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">?:</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Right to left</td></tr>
<tr style="box-sizing: border-box;"><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Assignment</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">>= += -= *= /= %= >>= <<= &= ^= |=</td><td style="border: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 8px; vertical-align: top;">Right to left</td></tr>
</tbody></table>
<div>
<span style="font-family: "georgia" , "times new roman" , serif;"><a href="https://www.blogger.com/2016/11/8-java-java-modifiers.html">Previous: 8.Java Modifiers</a></span><span style="font-family: "courier new" , "courier" , monospace;"> </span></div>
</div>
</div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-50787471264604082132017-03-20T01:35:00.000-07:002017-03-20T01:35:21.567-07:00Android - New and easy way to handle findViewById.<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDj8XaAlMEDNK8USbNqEnycVW-yTNwoh534fihrmQSruygil106aaSmISr6Ppu4DEl0z6kY-BnxVO8IvpI1xgxCIeeVPynaM2UQx5M6nRE4H57CPHRo6iS7pCrNdlrGR2J3yetzVtvc1EH/s1600/logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDj8XaAlMEDNK8USbNqEnycVW-yTNwoh534fihrmQSruygil106aaSmISr6Ppu4DEl0z6kY-BnxVO8IvpI1xgxCIeeVPynaM2UQx5M6nRE4H57CPHRo6iS7pCrNdlrGR2J3yetzVtvc1EH/s200/logo.png" width="200" /></a></div>
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif; font-size: large;">Field and Method binding method for android.</span><br />
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif; font-size: large;"><br /></span>
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;"><span style="font-size: large;">A very easy method to bind your views to class. It uses annotate fields @BindView and a view ID that automatically cast your view to field. </span></span><br />
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;"><br /></span>
<br />
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;">Old codes:</span><br />
<br /><span style="color: #666666; font-family: Courier New, Courier, monospace;">class MyActivity extends Activity{</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> Textview m1, m2;</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"><br /></span>
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> @Override</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> protected void onCreate(.......){</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> ..........</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> ..........</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> m1 =(TextView) findViewById(R.id.tv_m1);</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> m2 =(TextView) findViewById(R.id.tv_m2);</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> }</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;">}</span><br />
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;">New way to write this code:</span><br />
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="color: #666666; font-family: Courier New, Courier, monospace;">class MyActivity extends Activity{</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> @BindView(R.id.tv_m1) TextView m1;</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> @BindView(R.id.tv_m2) TextView m2;</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> </span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> @Override</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> protected void onCreate(.....){</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> .........</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> .........</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> ButterKnife.bind(this);</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"> }</span><br />
<span style="color: #666666; font-family: Courier New, Courier, monospace;"><br /></span>
<span style="color: #666666; font-family: Courier New, Courier, monospace;">}</span><br />
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;"></span><br />
<a name='more'></a><span style="color: #a64d79; font-family: Georgia, Times New Roman, serif;"><br /></span><br />
<br />
<h3 id="introduction" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 20px; font-style: italic; font-weight: 300; line-height: 40px; margin: 0px 0px 10px; padding-top: 0px; text-rendering: optimizeLegibility;">
Introduction</h3>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Annotate fields with <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindView</code> and a view ID for Butter Knife to find and automatically cast the corresponding view in your layout.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ExampleActivity</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">extends</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Activity</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">title</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> title</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">subtitle</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> subtitle</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">footer</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> footer</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> onCreate</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">Bundle</span><span class="pln" style="color: #48484c;"> savedInstanceState</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">super</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">onCreate</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">savedInstanceState</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
setContentView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">layout</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">simple_activity</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">bind</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">this</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO Use fields...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Instead of slow reflection, code is generated to perform the view look-ups. Calling <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">bind</code> delegates to this generated code that you can see and debug.</div>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
The generated code for the above example is roughly equivalent to the following:</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> bind</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">ExampleActivity</span><span class="pln" style="color: #48484c;"> activity</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
activity</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">subtitle </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">android</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">widget</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">TextView</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> activity</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">findViewById</span><span class="pun" style="color: #93a1a1;">(</span><span class="lit" style="color: #195f91;">2130968578</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
activity</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">footer </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">android</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">widget</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">TextView</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> activity</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">findViewById</span><span class="pun" style="color: #93a1a1;">(</span><span class="lit" style="color: #195f91;">2130968579</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
activity</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">title </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">android</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">widget</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">TextView</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> activity</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">findViewById</span><span class="pun" style="color: #93a1a1;">(</span><span class="lit" style="color: #195f91;">2130968577</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<h4 id="resource" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
RESOURCE BINDING</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Bind pre-defined resources with <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindBool</code>, <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindColor</code>, <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindDimen</code>, <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindDrawable</code>, <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindInt</code>, <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@BindString</code>, which binds an <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">R.bool</code> ID (or your specified type) to its corresponding field.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ExampleActivity</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">extends</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Activity</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindString</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="kwd" style="color: #1e347b;">string</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">title</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">String</span><span class="pln" style="color: #48484c;"> title</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindDrawable</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">drawable</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">graphic</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Drawable</span><span class="pln" style="color: #48484c;"> graphic</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindColor</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">color</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">red</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">int</span><span class="pln" style="color: #48484c;"> red</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;"> </span><span class="com" style="color: #93a1a1;">// int or ColorStateList field</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindDimen</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">dimen</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">spacer</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Float</span><span class="pln" style="color: #48484c;"> spacer</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;"> </span><span class="com" style="color: #93a1a1;">// int (for pixel size) or float (for exact value) field</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// ...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<h4 id="non-activity" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
NON-ACTIVITY BINDING</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
You can also perform binding on arbitrary objects by supplying your own view root.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">FancyFragment</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">extends</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Fragment</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">button1</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Button</span><span class="pln" style="color: #48484c;"> button1</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">button2</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Button</span><span class="pln" style="color: #48484c;"> button2</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> onCreateView</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">LayoutInflater</span><span class="pln" style="color: #48484c;"> inflater</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ViewGroup</span><span class="pln" style="color: #48484c;"> container</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Bundle</span><span class="pln" style="color: #48484c;"> savedInstanceState</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> inflater</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">inflate</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">layout</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">fancy_fragment</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> container</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">false</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">bind</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">this</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO Use fields...</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">return</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Another use is simplifying the view holder pattern inside of a list adapter.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">MyAdapter</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">extends</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">BaseAdapter</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> getView</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">int</span><span class="pln" style="color: #48484c;"> position</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ViewGroup</span><span class="pln" style="color: #48484c;"> parent</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">ViewHolder</span><span class="pln" style="color: #48484c;"> holder</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">if</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">view </span><span class="pun" style="color: #93a1a1;">!=</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">null</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
holder </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">ViewHolder</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">getTag</span><span class="pun" style="color: #93a1a1;">();</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">else</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
view </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> inflater</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">inflate</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">layout</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">whatever</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> parent</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">false</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
holder </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">new</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ViewHolder</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">view</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
view</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">setTag</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">holder</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
holder</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">name</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">setText</span><span class="pun" style="color: #93a1a1;">(</span><span class="str" style="color: #195f91;">"John Doe"</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// etc...</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">return</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">static</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ViewHolder</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">title</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> name</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">job_title</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> jobTitle</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ViewHolder</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">bind</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">this</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
You can see this implementation in action in the provided sample.</div>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Calls to <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">ButterKnife.bind</code> can be made anywhere you would otherwise put <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">findViewById</code> calls.</div>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Other provided binding APIs:</div>
<ul style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin: 0px 0px 10px 25px; padding: 0px;">
<li style="line-height: 20px; margin-bottom: 10px;">Bind arbitrary objects using an activity as the view root. If you use a pattern like MVC you can bind the controller using its activity with <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">ButterKnife.bind(this, activity)</code>.</li>
<li style="line-height: 20px; margin-bottom: 10px;">Bind a view's children into fields using <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">ButterKnife.bind(this)</code>. If you use <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;"><merge></code> tags in a layout and inflate in a custom view constructor you can call this immediately after. Alternatively, custom view types inflated from XML can use it in the <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">onFinishInflate()</code> callback.</li>
</ul>
<h4 id="view-lists" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
VIEW LISTS</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
You can group multiple views into a <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">List</code> or array.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@BindViews</span><span class="pun" style="color: #93a1a1;">({</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">first_name</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">middle_name</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">last_name </span><span class="pun" style="color: #93a1a1;">})</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">List</span><span class="pun" style="color: #93a1a1;"><</span><span class="typ" style="color: teal;">EditText</span><span class="pun" style="color: #93a1a1;">></span><span class="pln" style="color: #48484c;"> nameViews</span><span class="pun" style="color: #93a1a1;">;</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
The <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">apply</code> method allows you to act on all the views in a list at once.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">apply</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">nameViews</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> DISABLE</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">apply</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">nameViews</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> ENABLED</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">false</span><span class="pun" style="color: #93a1a1;">);</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
<code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">Action</code> and <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">Setter</code> interfaces allow specifying simple behavior.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">static</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">final</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">Action</span><span class="pun" style="color: #93a1a1;"><</span><span class="typ" style="color: teal;">View</span><span class="pun" style="color: #93a1a1;">></span><span class="pln" style="color: #48484c;"> DISABLE </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">new</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">Action</span><span class="pun" style="color: #93a1a1;"><</span><span class="typ" style="color: teal;">View</span><span class="pun" style="color: #93a1a1;">>()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> apply</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">int</span><span class="pln" style="color: #48484c;"> index</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
view</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">setEnabled</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">false</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">};</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">static</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">final</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">Setter</span><span class="pun" style="color: #93a1a1;"><</span><span class="typ" style="color: teal;">View</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Boolean</span><span class="pun" style="color: #93a1a1;">></span><span class="pln" style="color: #48484c;"> ENABLED </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">new</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="typ" style="color: teal;">Setter</span><span class="pun" style="color: #93a1a1;"><</span><span class="typ" style="color: teal;">View</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Boolean</span><span class="pun" style="color: #93a1a1;">>()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">set</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Boolean</span><span class="pln" style="color: #48484c;"> value</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">int</span><span class="pln" style="color: #48484c;"> index</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
view</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">setEnabled</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">value</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">};</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
An Android <a href="https://developer.android.com/reference/android/util/Property.html" style="color: #0088cc; text-decoration-line: none;"><code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">Property</code></a> can also be used with the <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">apply</code> method.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">apply</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">nameViews</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">View</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">ALPHA</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="lit" style="color: #195f91;">0.0f</span><span class="pun" style="color: #93a1a1;">);</span></pre>
<h4 id="listener-binding" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
LISTENER BINDING</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Listeners can also automatically be configured onto methods.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@OnClick</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">submit</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> submit</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO submit data to server...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
All arguments to the listener method are optional.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@OnClick</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">submit</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> submit</span><span class="pun" style="color: #93a1a1;">()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO submit data to server...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Define a specific type and it will automatically be cast.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@OnClick</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">submit</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> sayHi</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">Button</span><span class="pln" style="color: #48484c;"> button</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
button</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">setText</span><span class="pun" style="color: #93a1a1;">(</span><span class="str" style="color: #195f91;">"Hello!"</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Specify multiple IDs in a single binding for common event handling.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@OnClick</span><span class="pun" style="color: #93a1a1;">({</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">door1</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">door2</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">door3 </span><span class="pun" style="color: #93a1a1;">})</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> pickDoor</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">DoorView</span><span class="pln" style="color: #48484c;"> door</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">if</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">door</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">hasPrizeBehind</span><span class="pun" style="color: #93a1a1;">())</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">Toast</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">makeText</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">this</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="str" style="color: #195f91;">"You win!"</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> LENGTH_SHORT</span><span class="pun" style="color: #93a1a1;">).</span><span class="pln" style="color: #48484c;">show</span><span class="pun" style="color: #93a1a1;">();</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">else</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">Toast</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">makeText</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">this</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="str" style="color: #195f91;">"Try again"</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> LENGTH_SHORT</span><span class="pun" style="color: #93a1a1;">).</span><span class="pln" style="color: #48484c;">show</span><span class="pun" style="color: #93a1a1;">();</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Custom views can bind to their own listeners by not specifying an ID.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">FancyButton</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">extends</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Button</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@OnClick</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> onClick</span><span class="pun" style="color: #93a1a1;">()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO do something!</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<h4 id="reset" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
BINDING RESET</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Fragments have a different view lifecycle than activities. When binding a fragment in <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">onCreateView</code>, set the views to <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">null</code> in <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">onDestroyView</code>. Butter Knife returns an <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">Unbinder</code> instance when you call <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">bind</code> to do this for you. Call its <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">unbind</code> method in the appropriate lifecycle callback.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">class</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">FancyFragment</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">extends</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Fragment</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">button1</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Button</span><span class="pln" style="color: #48484c;"> button1</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">button2</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Button</span><span class="pln" style="color: #48484c;"> button2</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">private</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Unbinder</span><span class="pln" style="color: #48484c;"> unbinder</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> onCreateView</span><span class="pun" style="color: #93a1a1;">(</span><span class="typ" style="color: teal;">LayoutInflater</span><span class="pln" style="color: #48484c;"> inflater</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ViewGroup</span><span class="pln" style="color: #48484c;"> container</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">Bundle</span><span class="pln" style="color: #48484c;"> savedInstanceState</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> inflater</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">inflate</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">layout</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">fancy_fragment</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> container</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">false</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
unbinder </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">bind</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">this</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO Use fields...</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">return</span><span class="pln" style="color: #48484c;"> view</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Override</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">public</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> onDestroyView</span><span class="pun" style="color: #93a1a1;">()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">super</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">onDestroyView</span><span class="pun" style="color: #93a1a1;">();</span><span class="pln" style="color: #48484c;">
unbinder</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">unbind</span><span class="pun" style="color: #93a1a1;">();</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<h4 id="optional" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
OPTIONAL BINDINGS</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
By default, both <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@Bind</code> and listener bindings are required. An exception will be thrown if the target view cannot be found.</div>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
To suppress this behavior and create an optional binding, add a <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@Nullable</code> annotation to fields or the <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@Optional</code> annotation to methods.</div>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Note: Any annotation named <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@Nullable</code> can be used for fields. It is encouraged to use the <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">@Nullable</code> annotation from <a href="http://tools.android.com/tech-docs/support-annotations" style="color: #0088cc; text-decoration-line: none;">Android's "support-annotations" library</a>.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@Nullable</span><span class="pln" style="color: #48484c;"> </span><span class="lit" style="color: #195f91;">@BindView</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">might_not_be_there</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> mightNotBeThere</span><span class="pun" style="color: #93a1a1;">;</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@Optional</span><span class="pln" style="color: #48484c;"> </span><span class="lit" style="color: #195f91;">@OnClick</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">maybe_missing</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> onMaybeMissingClicked</span><span class="pun" style="color: #93a1a1;">()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO ...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<h4 id="multi-method-listeners" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
MULTI-METHOD LISTENERS</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Method annotations whose corresponding listener has multiple callbacks can be used to bind to any one of them. Each annotation has a default callback that it binds to. Specify an alternate using the <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">callback</code> parameter.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="lit" style="color: #195f91;">@OnItemSelected</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">list_view</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> onItemSelected</span><span class="pun" style="color: #93a1a1;">(</span><span class="kwd" style="color: #1e347b;">int</span><span class="pln" style="color: #48484c;"> position</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO ...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span><span class="pln" style="color: #48484c;">
</span><span class="lit" style="color: #195f91;">@OnItemSelected</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">value </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">maybe_missing</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> callback </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> NOTHING_SELECTED</span><span class="pun" style="color: #93a1a1;">)</span><span class="pln" style="color: #48484c;">
</span><span class="kwd" style="color: #1e347b;">void</span><span class="pln" style="color: #48484c;"> onNothingSelected</span><span class="pun" style="color: #93a1a1;">()</span><span class="pln" style="color: #48484c;"> </span><span class="pun" style="color: #93a1a1;">{</span><span class="pln" style="color: #48484c;">
</span><span class="com" style="color: #93a1a1;">// TODO ...</span><span class="pln" style="color: #48484c;">
</span><span class="pun" style="color: #93a1a1;">}</span></pre>
<h4 id="bonus" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
BONUS</h4>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Also included are <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">findById</code> methods which simplify code that still has to find views on a <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">View</code>, <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">Activity</code>, or <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">Dialog</code>. It uses generics to infer the return type and automatically performs the cast.</div>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="typ" style="color: teal;">View</span><span class="pln" style="color: #48484c;"> view </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">LayoutInflater</span><span class="pun" style="color: #93a1a1;">.</span><span class="kwd" style="color: #1e347b;">from</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">context</span><span class="pun" style="color: #93a1a1;">).</span><span class="pln" style="color: #48484c;">inflate</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">layout</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">thing</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> </span><span class="kwd" style="color: #1e347b;">null</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> firstName </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">findById</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">view</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">first_name</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">TextView</span><span class="pln" style="color: #48484c;"> lastName </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">findById</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">view</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">last_name</span><span class="pun" style="color: #93a1a1;">);</span><span class="pln" style="color: #48484c;">
</span><span class="typ" style="color: teal;">ImageView</span><span class="pln" style="color: #48484c;"> photo </span><span class="pun" style="color: #93a1a1;">=</span><span class="pln" style="color: #48484c;"> </span><span class="typ" style="color: teal;">ButterKnife</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">findById</span><span class="pun" style="color: #93a1a1;">(</span><span class="pln" style="color: #48484c;">view</span><span class="pun" style="color: #93a1a1;">,</span><span class="pln" style="color: #48484c;"> R</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">id</span><span class="pun" style="color: #93a1a1;">.</span><span class="pln" style="color: #48484c;">photo</span><span class="pun" style="color: #93a1a1;">);</span></pre>
<div style="background-color: rgba(255, 255, 255, 0.901961); color: #222222; font-family: Roboto, sans-serif; font-size: 14px; margin-bottom: 10px;">
Add a static import for <code style="background: none; border-radius: 3px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; padding: 2px 4px; white-space: nowrap;">ButterKnife.findById</code> and enjoy even more fun.</div>
<h3 id="download" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 20px; font-style: italic; font-weight: 300; line-height: 40px; margin: 0px 0px 10px; padding-top: 40px; text-rendering: optimizeLegibility;">
Download</h3>
<h4 style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 13px; font-style: italic; font-weight: 400; line-height: 14px; margin: 0px 0px 8px; padding-top: 20px; text-rendering: optimizeLegibility; text-transform: uppercase;">
GRADLE</h4>
<pre class="prettyprint" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;"><span class="pln" style="color: #48484c;">compile </span><span class="str" style="color: #195f91;">'com.jakewharton:butterknife:</span><span class="version">8.5.1</span><span class="str" style="color: #195f91;">'</span><span class="pln" style="color: #48484c;">
annotationProcessor </span><span class="str" style="color: #195f91;">'com.jakewharton:butterknife-compiler:</span><span class="version">8.5.1</span><span class="str" style="color: #195f91;">'</span></pre>
<h3 id="license" style="background-color: rgba(255, 255, 255, 0.901961); color: #555555; font-family: Roboto, sans-serif; font-size: 20px; font-style: italic; font-weight: 300; line-height: 40px; margin: 0px 0px 10px; padding-top: 40px; text-rendering: optimizeLegibility;">
License</h3>
<pre class="license" style="background: none rgba(255, 255, 255, 0.901961); border-radius: 4px; border: none; color: #444444; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 10px; overflow: auto; padding: 0px; word-break: break-all; word-wrap: normal;">Copyright 2013 Jake Wharton
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.</pre>
<span style="color: #a64d79; font-family: Georgia, Times New Roman, serif; font-size: large;"><br /></span></div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-42650945059329828412016-12-26T08:29:00.002-08:002016-12-26T08:31:25.470-08:00Android - Creating a circle button widget with text inside.<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb90RdENj08aI9Z74vxCVFa4KGJ0NH8ugxHNuho7g5_lS_evHaQEfQcLeATNEyv6-IfS86R2chCR1VrnGNvFefONenS-hP7aa9SVu80FreIMnrA_RbRxdGfD6zkViALyVwBE9GZhvOOpJx/s1600/RoundButton.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb90RdENj08aI9Z74vxCVFa4KGJ0NH8ugxHNuho7g5_lS_evHaQEfQcLeATNEyv6-IfS86R2chCR1VrnGNvFefONenS-hP7aa9SVu80FreIMnrA_RbRxdGfD6zkViALyVwBE9GZhvOOpJx/s1600/RoundButton.png" /></a><span style="color: #20124d; font-family: "georgia" , "times new roman" , serif; font-size: large;">How to create a circle/round button in android?</span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>Step1: </b>Create a drawable xml in res/drawable folder with name "button_round.xml"</span></div>
<div>
<br /></div>
<div>
<span class="hljs-pi" style="color: #999999; font-family: monospace; font-size: 15px; font-weight: bold; white-space: pre;"><?xml version="1.0" encoding="utf-8"?></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"><<span class="hljs-title">selector</span> <span class="hljs-attribute" style="color: teal;">xmlns:android</span>=<span class="hljs-value" style="color: #dd1144;">"http://schemas.android.com/apk/res/android"</span>></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"><<span class="hljs-title">item</span>></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"><<span class="hljs-title">shape</span> <span class="hljs-attribute" style="color: teal;">android:shape</span>=<span class="hljs-value" style="color: #dd1144;">"oval"</span>></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"><<span class="hljs-title">stroke</span> <span class="hljs-attribute" style="color: teal;">android:color</span>=<span class="hljs-value" style="color: #dd1144;">"#60d8ff"</span> <span class="hljs-attribute" style="color: teal;">android:width</span>=<span class="hljs-value" style="color: #dd1144;">"5dp"</span> /></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"><<span class="hljs-title">solid</span> <span class="hljs-attribute" style="color: teal;">android:color</span>=<span class="hljs-value" style="color: #dd1144;">"#007aff"</span>/></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"><<span class="hljs-title">size</span> <span class="hljs-attribute" style="color: teal;">android:width</span>=<span class="hljs-value" style="color: #dd1144;">"150dp"</span> <span class="hljs-attribute" style="color: teal;">android:height</span>=<span class="hljs-value" style="color: #dd1144;">"150dp"</span>/></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"></<span class="hljs-title">shape</span>></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"></<span class="hljs-title">item</span>></span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;"></<span class="hljs-title">selector</span>></span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>Step 2: </b>Use this drawable in normal android button background to make it circular.</span></div>
<div>
<span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;"><</span><span class="hljs-tag" style="color: navy; font-family: monospace; font-size: 15px; white-space: pre;">Button</span><span style="background-color: #f6fbff; color: #333333; font-family: monospace; font-size: 15px; white-space: pre;">
</span><span class="hljs-rule" style="color: #333333; font-family: monospace; font-size: 15px; white-space: pre;"><span class="hljs-attribute" style="color: teal;">android</span>:<span class="hljs-value">id =<span class="hljs-string" style="color: #dd1144;">"@+id/button1"</span>
android:layout_width=<span class="hljs-string" style="color: #dd1144;">"150dp"</span>
android:layout_height=<span class="hljs-string" style="color: #dd1144;">"150dp"</span>
android:text=<span class="hljs-string" style="color: #dd1144;">"Round Button"</span>
android:background=<span class="hljs-string" style="color: #dd1144;">"@drawable/button_round"</span>
android:padding=<span class="hljs-string" style="color: #dd1144;">"15dp"</span>
/></span></span></div>
</div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-73333869581209166232016-12-13T11:48:00.000-08:002016-12-13T11:48:02.500-08:00Android - Get all available storage path in android like internal storage and sdcard.<div dir="ltr" style="text-align: left;" trbidi="on">
Use this class to get all available storage on your android:<br />
<br />
<pre class="default prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">class</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageUtils</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">private</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">static</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">final</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> TAG </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"StorageUtils"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">static</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">class</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">final</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> path</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">final</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">final</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> removable</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">final</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">int</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> number</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> path</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> removable</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">int</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> number</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">this</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">path </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> path</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">this</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">this</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">removable </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> removable</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">this</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">number </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> number</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> getDisplayName</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">()</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StringBuilder</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> res </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StringBuilder</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(!</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">removable</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
res</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">append</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"Internal Storage"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">else</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">number </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">></span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">1</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
res</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">append</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"SD card "</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">+</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> number</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">else</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
res</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">append</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"SD card"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
res</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">append</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">" (Read only)"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">return</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> res</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">toString</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">public</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">static</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">List</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"><</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">></span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> getStorageList</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">()</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">List</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"><</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">></span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> list </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ArrayList</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"><</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">>();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">getExternalStorageDirectory</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">().</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">getPath</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_removable </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">isExternalStorageRemovable</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_state </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">getExternalStorageState</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_available </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_state</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">equals</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">MEDIA_MOUNTED</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">||</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_state</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">equals</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">MEDIA_MOUNTED_READ_ONLY</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_readonly </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">getExternalStorageState</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">().</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">equals</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Environment</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">MEDIA_MOUNTED_READ_ONLY</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">HashSet</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"><</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">></span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> paths </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">HashSet</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"><</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">>();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">int</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> cur_removable_number </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">1</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">def_path_available</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
paths</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">add</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">def_path</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
list</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">add</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">0</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">def_path</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_readonly</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_removable</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> def_path_removable </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">?</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> cur_removable_number</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">++</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">1</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">));</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">BufferedReader</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> buf_reader </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">null</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">try</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
buf_reader </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">BufferedReader</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">FileReader</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"/proc/mounts"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">));</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">while</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">((</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> buf_reader</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">readLine</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">())</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">null</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"vfat"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">||</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"/mnt"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">||</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"sdcardfs"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">))</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Log</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">d</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">TAG</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StringTokenizer</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> tokens </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StringTokenizer</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">" "</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> mPath </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> tokens</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">nextToken</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="com" style="border: 0px; color: #858c93; margin: 0px; padding: 0px;">//device</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> mount_point </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> tokens</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">nextToken</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="com" style="border: 0px; color: #858c93; margin: 0px; padding: 0px;">//mount point</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">paths</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">mount_point</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">))</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">continue</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> unused </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> tokens</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">nextToken</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="com" style="border: 0px; color: #858c93; margin: 0px; padding: 0px;">//file system</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">List</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"><</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">></span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> flags </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Arrays</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">asList</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">tokens</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">nextToken</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">().</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">split</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">","</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">));</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="com" style="border: 0px; color: #858c93; margin: 0px; padding: 0px;">//flags</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">boolean</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> flags</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"ro"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(!</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"/mnt/secure"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">&&</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"/mnt/asec"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">&&</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"/mnt/obb"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">&&</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"/dev/mapper"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">&&</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">line</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">contains</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"tmpfs"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">))</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">File</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> testFile </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">File</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">mount_point</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">testFile</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">isDirectory</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">()</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">&&</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> testFile</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">listFiles</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">()</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">null</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
paths</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">add</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">mount_point</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
list</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">add</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">StorageInfo</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">mount_point</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">readonly</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">true</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> cur_removable_number</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">++));</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">catch</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">FileNotFoundException</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> ex</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
ex</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">printStackTrace</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">catch</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">IOException</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> ex</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
ex</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">printStackTrace</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">finally</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">if</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">buf_reader </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">!=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">null</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">try</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
buf_reader</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">close</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">catch</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">IOException</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> ex</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">return</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> list</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span></code></pre>
</div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-85606919238806527282016-11-11T09:55:00.001-08:002017-05-06T05:17:03.246-07:008. Java - Java Modifiers<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1FS5WoaQdzQQKOnSliLJqt9cdRDEsDP0IOkbDk7tYTj4Z7SrwO3Pz-A1JcsOWXIbXdgXOtog_wWJfmUN5ZgR-_6ZPkIp-FqNvTKJ0y3bNM81OFCTFd3Y4b68DPoWIPKYzTa02q1MkUGF/s1600/javamodifier.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Java Modifiers Tree" border="0" height="443" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1FS5WoaQdzQQKOnSliLJqt9cdRDEsDP0IOkbDk7tYTj4Z7SrwO3Pz-A1JcsOWXIbXdgXOtog_wWJfmUN5ZgR-_6ZPkIp-FqNvTKJ0y3bNM81OFCTFd3Y4b68DPoWIPKYzTa02q1MkUGF/s640/javamodifier.jpg" title="" width="640" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b>What is Java Modifier?</b></span></h3>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Java Modifier is a keyword used for changing the behavior of variable or class in term of its usage.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Java Modifier is categorized in two parts:-</span><br />
<br />
<ol style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Access Modifier</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Non Access Modifier </span></li>
</ol>
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b>How can we use a modifier?</b></span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Simple usage of modifier:</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">modifier variableName;</span></div>
<div>
<span style="font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">where modifier is a keyword i.e. public, private, protected, static, final etc...</span></div>
<h3 style="text-align: left;">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><br /></b></span><span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b>What is Java Access Modifier?</b></span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Java Access Modifier is like a security key which gives different access to classes, variables, methods or constructor . In simple word, it controls the access level and it use for security reason.</span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">The four Java Access Modifier are:</span></div>
<div>
<ol style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">default :-> It gives access to package (no need to write it).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>public </b>:-> Give access to the world.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>private </b>:-> Give access to the class only.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>protected </b>:-> Give access to package and all sub classes.</span></li>
</ol>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Example:</span></div>
</div>
<div>
<span style="color: #6aa84f; font-family: "georgia" , "times new roman" , serif;"></span><br />
<a name='more'></a><span style="color: #6aa84f; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<span style="color: #999999; font-family: "courier new" , "courier" , monospace; font-size: x-small;">//This class can be used by the world.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: #0b5394;">public</span> class Test{</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: #0b5394;">private</span> int myInt; <span style="color: #999999; font-size: x-small;">//this variable only access by class <b>Test</b>.</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: #0b5394;">public</span> String myString;<span style="font-size: x-small;"> <span style="color: #999999;">//this variable access by everyone.</span></span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: #0b5394;">protected</span> int count; <span style="color: #999999; font-size: x-small;">//this variable can access in class and sub class.</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> <span style="color: #0b5394;">private </span>void myMethod(){</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"> }</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">}</span></div>
<h3>
<span style="color: #0b5394;"><span style="font-family: "courier new" , "courier" , monospace;"><b><br /></b></span><span style="font-family: "georgia" , "times new roman" , serif;"><b>What is Java Non Access Modifier?</b></span></span></h3>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Java Non Access Modifier provide various functionality and they are as follows:</span></div>
<div>
<ol style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>static </b>:-> this modifier allows direct access to method and variable without creating an object for its class.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>final </b>:-> this modifier affect class, method and variable too in following ways:</span></li>
<ol>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">A class cannot be subclassed by using final modifier.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">A method cannot be override with its sub class.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">A variable cannot change its value one initialized.</span></li>
</ol>
<li><span style="color: #444444;"><span style="font-family: "georgia" , "times new roman" , serif;"><b>abstract </b>:-> it use for creating abstract class or method. It means if a class is abstract then it can't be use as a object. It only work as a parent class and it's subclass must have to complete its abstract methods.</span><br /><span style="font-family: "georgia" , "times new roman" , serif;">Example:</span><br /><span style="font-family: "courier new" , "courier" , monospace;"><br />abstract class A{<br /> ......<br /> ......<br /> public abstract void myMethod();<br />}<br /><br />class B extends A{<br /> ......<br /> ......<br /><complete id="goog_805722628"> @Override</complete> public void myMethod(){<br /> .....<br /> .....<br /> }<br />}</span></span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>synchronized </b>:->this modifier used in thread, so we can discuss in Thread tutorial.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>volatile </b>:-> this modifier also used in thread.</span></li>
</ol>
<div>
<span style="font-family: "georgia" , "times new roman" , serif;"><b><span style="color: #0b5394;">Some important information:</span><span style="color: #073763;"> </span></b></span></div>
<div>
<ol style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">We can use <b>1</b> Access Modifier with <b>1 or more</b> Non-Access Modifier for same variable/class/method.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">We cannot use abstract and final same time.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">We cannot use private with abstract.</span></li>
</ol>
</div>
</div>
<div>
<span style="font-family: "georgia" , "times new roman" , serif;"><a href="/2016/11/7-java-data-types-and-variable.html">Previous: 7.Java Data Types and Variable</a></span><span style="font-family: "courier new" , "courier" , monospace;"> </span><span style="font-family: "georgia" , "times new roman" , serif;"><a href="/2017/05/9-java-operators.html">Next: 9.Java Operator</a></span></div>
<div>
<span style="color: #444444;"><br /></span></div>
</div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-33788466439760404892016-11-01T04:58:00.000-07:002016-11-11T10:05:02.153-08:007. Java - Data Types and Variable<div dir="ltr" style="text-align: left;" trbidi="on">
<img alt="java data type" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMPzVyhdwFIwem8H9FbU_KcgAQWv4utEpar6t4tekrKGGtlZWvXGYctrt5FruLm4uBBCEJH2PzVhG2cbXcVMhSBKgdyOqVCrC0Zk_P8wkHhUendV1922FdMzp0yho9ZC6zDLdFoNlFedvD/s1600/java_datatype.jpg" />
<br />
<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u><br /></u></b></span>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u>What is datatype?</u></b></span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">A variable is the name that point to a specific information in computer memory(RAM).</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Every information has specific datatype. And each datatype require different storage size in RAM. Therefore we declare variable with a datatype to allocate different storage size with its type. </span><br />
<b><span style="color: #0b5394;"><br /></span></b>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u>Why we require datatype?</u></b></span><br />
<ul style="text-align: left;">
<li><span style="font-family: "georgia" , "times new roman" , serif;">For allocating different storage size in ram, because ram size is limited.</span></li>
<li><span style="font-family: "georgia" , "times new roman" , serif;">To different between its type.<br /><span style="color: #0b5394;">Explanation:</span> If we declare a variable with<b> String a = "5" </b> and we want to add 12 to variable <b>a. </b>Then the value of a become <b>512. </b>To remove this problem datatype is useful too.</span></li>
</ul>
<br />
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u>Basic syntax for writing a variable with a data type is:</u></b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">datatype myVariableName;</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b><u>There are two kind of data types in Java:</u></b></span><br />
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Primitive Data Type</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Reference/Object type.</span></li>
</ul>
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>Primitive data type:</b></span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b><br /></b></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>int</b>: it is used for integral values.</span><br />
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 32 bit.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Minimum value: - 2,147,483,648 (-2^31).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Maximum value: 2,147,483,647(inclusive) (2^31 -1).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: 0 (zero).</span></li>
</ul>
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>byte</b>: It is used to save space in large arrays, a byte is 4 times smaller than int.</span><br />
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 8 bit.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Minimum value: -128 (-2^7).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Maximum value: 127 (inclusive)(2^7 -1).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: 0 (zero).</span></li>
</ul>
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>short</b>: It is also same as int, but it is 2 times smaller than an int.</span><br />
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 16 bit.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Minimum value: -32,768 (-2^15).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Maximum value: 32,767 (inclusive) (2^15 -1).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: 0 (zero).</span></li>
</ul>
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>long</b>: it is used for a wider range value. </span><br />
<ul>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 64 bit.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Minimum value: -9,223,372,036,854,775,808(-2^63).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Maximum value: 9,223,372,036,854,775,807 (inclusive)(2^63 -1).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: 0L (zero). </span><span style="color: #666666; font-family: "georgia" , "times new roman" , serif;">{In long datavalue, datatype should contains L as a suffix.}</span></li>
</ul>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>float</b>: it is used for precise values.
</span><br />
<ul>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 32-bit IEEE 754 floating point (Single Precision).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Float data type is never used for precise values such as currency.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Float is mainly used to save memory in large arrays of floating point numbers</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: 0.0f(zero). </span><span style="color: #666666; font-family: "georgia" , "times new roman" , serif;">{In double datavalue, datatype should contains f as a suffix.}</span></li>
</ul>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>double</b>: it is used for decimal values.
</span><br />
<ul>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 64-bit IEEE 754 floating point (Double Precision).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">This data type is generally used as the default data type for decimal values, generally the default choice.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Double data type should never be used for precise values such as currency.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: 0.0d (zero). </span><span style="color: #666666; font-family: "georgia" , "times new roman" , serif;">{In double datavalue, datatype should contains d as a suffix.}</span></li>
</ul>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>boolean</b>: It is used for simple flags true/false condition.
</span><br />
<ul>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 1 bit.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">There is only two value true or false.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default value: false.</span></li>
</ul>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>char</b>: it is used to store a character value.</span><br />
<ul>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Allocated size: 16 bit.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Minimum value: '\u0000' (or 0{zero}).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Maximum value: '\uffff' (or 65,535 inclusive).</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">It is used to store any character.</span></li>
</ul>
<div>
<b style="color: #444444; font-family: Georgia, "Times New Roman", serif;">Reference/Object data type: </b><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">It is used to allocate storage space for a </span><a href="http://0.0.7.222/08/3-java-basic-about-java-classes-objects.html" style="color: #444444; font-family: Georgia, "Times New Roman", serif;" target="_blank">object</a><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"> in computer memory (RAM).</span><br />
<ul style="text-align: left;">
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Class objects and various type of array variables come under reference datatype.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Default Value: null.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Reference variable points to an object(which is instance of a class) in the computer memory.</span></li>
<li><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Example:</span><br /><span style="font-family: "courier new" , "courier" , monospace;">Car myCar = new Car();</span><br /><br /><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Here <b>Car</b> is a class, <b>myCar</b> is a variable and <b>new</b> is a keyword used to create a new copy of class as a object.</span></li>
</ul>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><u><br /></u></span></div>
</div>
<div>
<b style="color: #0b5394; font-family: Georgia, "Times New Roman", serif;"><u>Deep and more detail in Java datatype.</u></b></div>
<div>
<b style="color: #0b5394; font-family: Georgia, "Times New Roman", serif;"><br /></b></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><b>Java Literals</b></span></div>
<div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">A Java Literal is a source-code representation of fixed value. Without any computation, literal can be assigned to a variable.<br />It can assign to any primitive datatype variable.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span></div>
<div>
<div style="font-family: Georgia, "Times New Roman", serif;">
<span style="color: #444444;">byte, int, long, and short can be expressed in decimal(base 10), hexadecimal(base 16) or octal(base 8) number systems as well.</span></div>
<span style="color: #444444;">
</span>
<br />
<div>
<span style="color: #444444;"><span style="font-family: "georgia" , "times new roman" , serif;">Prefix </span><span style="font-family: inherit;">0</span><span style="font-family: "georgia" , "times new roman" , serif;">(zero) is used to indicate octal, and prefix </span><span style="font-family: inherit;">0x</span><span style="font-family: "georgia" , "times new roman" , serif;"> indicates hexadecimal when using these number systems for literals. <u>For Example:</u></span></span></div>
<span style="color: #444444;">
</span>
<br />
<div>
<span style="color: #444444;">int decimal = 123;</span></div>
<span style="color: #444444;">
</span>
<div>
<span style="color: #444444;">int octal = 0124;</span></div>
<span style="color: #444444;">
<div>
int hexa = 0x32;<br />
<br />
String Literal in Java is specified with a back slash ("\") symbol and a character after this symbol. They can directly write in string like this: "Hello<b>\n</b>World".</div>
<div>
<br /></div>
<div>
<b>These are String Literal in Java</b> (which are same as in other language.):</div>
<div>
<table class="table table-hover">
<thead>
<tr><th>Notation</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>\b</td><td>Backspace</td></tr>
<tr><td>\ddd</td><td>Octal Character</td></tr>
<tr><td>\f</td><td>Formfeed</td></tr>
<tr><td>\n</td><td>For writing a new line.</td></tr>
<tr><td>\r</td><td>Carriage return</td></tr>
<tr><td>\s</td><td>Space</td></tr>
<tr><td>\t</td><td>Tab</td></tr>
<tr><td>\'</td><td>Single Quote</td></tr>
<tr><td>\"</td><td>Double Quote</td></tr>
<tr><td>\\</td><td>Back Slash</td></tr>
<tr><td>\uxxxx</td><td>Hexadecimal unicode character, where is x has some integer value.</td></tr>
</tbody>
</table>
<br /></div>
<div>
<a href="/2014/09/6-java-variables.html">Previous: 6. Java Variables</a> <a href="/2016/11/8-java-java-modifiers.html">Next: 8. Java Modifiers</a></div>
</span></div>
</div>
</div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-12168440883763432502016-10-31T02:17:00.003-07:002016-10-31T12:33:47.785-07:00Start Learning Java from Beginner to Expert<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj39KjjQkZ0Bf5mb0Eb12SL_luGA2wVaqwnONgwEM8Zh_NqZxXiJeqB3jIUfp4_DXWzWE5Cypp0UxzhHqTN8YYWeP4FulP3gNQJFUl08ItI2l4vyS5Xi5kbQbrfJ8CcahAonawSSO-ZFYYy/a700/courses-8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj39KjjQkZ0Bf5mb0Eb12SL_luGA2wVaqwnONgwEM8Zh_NqZxXiJeqB3jIUfp4_DXWzWE5Cypp0UxzhHqTN8YYWeP4FulP3gNQJFUl08ItI2l4vyS5Xi5kbQbrfJ8CcahAonawSSO-ZFYYy/a700/courses-8.jpg" width="320" /></a></div>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Class is the collection of variables i.e. fields and methods. And a program is collection of classes.<br />The basic code for declaring a class in Java is:</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: #073763;">class</span> MyClass{</span><br />
<span style="color: #999999; font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="color: #999999; font-family: "courier new" , "courier" , monospace;">//Your codes go here.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">When declaring a class, the name of class should be start with capital letter and cannot contains space or special character. If you want to write "My first class" then you should have to write it in Camel Case like: "MyFirstClass".</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">CamelCase is very good approach in programming because it is human readable.</span><br />
<br />
<br />
<a name='more'></a><br />
<br />
<b><span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;">What is Variable?</span></b><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">It is like a name that point to something in computer memory. In Java it is good to write a variable and method name starting with small character. It is beneficial to differentiate between a class name and variable/method name. It also can't contains any spaces and start with alphabet. Variable that is a member of a class is called a field.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Each variable has a datatype associated with it that define which type of information, variable contains i.e. String (group of character), number or decimal etc.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">The basic code for declaring a variable is:</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">datatype myVariable;</span><br />
<span style="color: #444444; font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Variable can be also declare with its initial value like this:</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">dataype myVariable = myvalue;</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">It's mean You are declaring a vaiable <b>myVariable</b> with a initial value <b>myvalue</b> of type <b>datatype</b>. We will learn about data type in upcoming tutorial.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444;"><span style="font-family: "georgia" , "times new roman" , serif;">Note: </span><span style="background-color: #d9ead3;"><span style="font-family: "courier new" , "courier" , monospace;"> </span></span></span><span style="background-color: #d9ead3;"><span style="font-family: "courier new" , "courier" , monospace;">= </span></span><span style="font-family: "courier new" , "courier" , monospace;"> </span><span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">is a assignment operator, which assign a right operand to left operand.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #0b5394; font-family: "georgia" , "times new roman" , serif;"><b>What is Method?</b></span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">It is type of function which operates on the variables of a class. Method will execute when some one calls and returns a value to the caller. </span><br />
Basic declaration of method:<br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">datatype methodName(){</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Here dataype defines what value the method will written after complete its execution.</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">This is basic syntax that show how to call a method:</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">datatype myVariable = methodName();</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">or</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">methodName();</span><br />
<br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;">Above myVariable will get a result from methodName() in first syntax. And in second syntax no value will written to any field(variable).</span><br />
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><br /></span>
<span style="color: #444444; font-family: "georgia" , "times new roman" , serif;"><a href="http://e-btech.blogspot.in/2014/09/1-install-and-setup-java-environment-on.html">Next: Installing Java</a></span><br />
<br /></div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-68736255570779941112016-02-11T04:12:00.000-08:002016-10-31T12:46:54.005-07:00Android - How to show javascript alert in WebView<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCflQGC9BLr_Z6NjiUnsY4cKEWl4cnPGKJ9e7-mlJDrMQ06G9w6Z_5QlVeR6cKGFz5HsEK0yTF5kExTBhY3Jlsd3eE_KxDqWgmtcRDjFVaghqVDSN_Ff-89TDrW4X1bdJWB9gjSSyLbKxl/s1600/Untitled-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCflQGC9BLr_Z6NjiUnsY4cKEWl4cnPGKJ9e7-mlJDrMQ06G9w6Z_5QlVeR6cKGFz5HsEK0yTF5kExTBhY3Jlsd3eE_KxDqWgmtcRDjFVaghqVDSN_Ff-89TDrW4X1bdJWB9gjSSyLbKxl/s320/Untitled-1.jpg" width="320" /></a></div>
<b><span style="color: #351c75; font-size: large;"><br /></span></b>
<b><span style="color: #351c75; font-size: large;">How to show javascript alert in WebView?</span></b><br />
<b><span style="color: #351c75; font-size: large;"><br /></span></b>
<span style="color: #351c75; font-size: medium;">In android, WebView does not show javascript alert dialog in activity. Here I give a solution that can easily handle the alert dialog with user customization. </span><br />
<span style="color: #351c75; font-size: medium;"><br /></span>
<span style="color: #351c75; font-size: medium;"><u>Write the following code under activity after initiating the WebView.</u></span><br />
<span style="color: #351c75; font-size: large;"><br /></span>
<br />
<pre style="background-color: white; font-family: 'Courier New';"><span style="background-color: #ffe4ff;">WebView wv</span>= (WebView) findViewById(R.id.<span style="color: #660e7a; font-style: italic; font-weight: bold;">webView</span>);</pre>
<code><span style="color: navy; font-family: "courier new"; font-weight: bold;">final </span><span style="background-color: white; font-family: "courier new";">Context mc=</span><span style="color: navy; font-family: "courier new"; font-weight: bold;">this</span><span style="background-color: white; font-family: "courier new";">;</span></code><br />
<code></code><br />
<a name='more'></a><br />
<br />
<pre style="background-color: white; font-family: 'Courier New';"><span style="color: #660e7a; font-weight: bold;">wv</span>.setWebChromeClient(<span style="color: navy; font-weight: bold;">new </span>WebChromeClient() {
<span style="color: olive;">@Override</span><span style="color: olive;"> </span></pre>
<pre style="background-color: white; font-family: 'Courier New';"><span style="color: navy; font-weight: bold;"> public boolean </span>onJsAlert(WebView view, String url, String message, <span style="color: navy; font-weight: bold;">final </span>JsResult result) {
<span style="color: navy; font-weight: bold;">new </span>AlertDialog.Builder(<span style="color: #660e7a;">mc</span>)
.setTitle(<span style="color: green; font-weight: bold;">"masoomyf"</span>)
.setMessage(message)
.setPositiveButton(<span style="color: green; font-weight: bold;">"Button Text"</span>, <span style="color: navy; font-weight: bold;">new </span>AlertDialog.OnClickListener() {
<span style="color: olive;">@Override</span></pre>
<pre style="background-color: white; font-family: 'Courier New';"><span style="color: olive;"> </span><span style="color: navy; font-weight: bold;">public void </span>onClick(DialogInterface dialogInterface, <span style="color: navy; font-weight: bold;">int </span>i) {
<span style="color: #660e7a;">result</span>.confirm();
}
})
.setCancelable(<span style="color: navy; font-weight: bold;">false</span>)
.create().show();
<span style="color: navy; font-weight: bold;">return true</span>;
}
});
<span style="color: #660e7a; font-weight: bold;">wv</span>.getSettings().setJavaScriptEnabled(<span style="color: navy; font-weight: bold;">true</span>);</pre>
<code> </code><span style="color: #351c75; font-size: large;"><br /></span><br />
<b>If there is any error after implementing this code and let us know. </b><br />
<span style="color: #351c75; font-size: medium;"><b><br /></b></span>
<span style="color: #351c75; font-size: medium;"><b>KeyWords: <span style="color: #cccccc;">Android WebView JavaScript Alert</span></b></span>
<span style="color: #351c75; font-size: large;"><br /></span></div>
masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-60134798004638396432016-02-09T07:47:00.001-08:002016-02-09T07:47:45.467-08:00#3 3D SIMPLE TABLE IN Autodesk MAYA MAX 2011 in HINDI, Hinglish - Part 2<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/LMBpeDSpyH4" width="480"></iframe>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-71597395588470449342016-02-05T10:15:00.001-08:002016-02-05T10:15:57.018-08:003D SIMPLE TABLE IN MAYA MAX 2011 in HINDI, Hinglish<b><span style="font-family: Georgia, Times New Roman, serif; font-size: large;"><span style="color: #666666;">A very easy step to start your career in 3D Multimedia Field with </span>3D Maya </span><span style="color: #666666; font-family: Georgia, Times New Roman, serif; font-size: large;">Software.</span></b><br /><br />
<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/cgnANA2Mjfo" width="480"></iframe>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0tag:blogger.com,1999:blog-4152442290256220593.post-42788440171784159172016-02-05T10:14:00.001-08:002016-02-05T10:14:15.045-08:003D SIMPLE TABLE IN MAYA MAX 2011 in HINDI, Hinglish<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/cgnANA2Mjfo" width="480"></iframe>masoomyfhttp://www.blogger.com/profile/01850903498914537505noreply@blogger.com0