<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2279248080004909877</id><updated>2011-12-05T12:54:55.780+07:00</updated><category term='barcamp'/><category term='SMS'/><category term='phỏng vấn'/><category term='User Interface'/><category term='Vietnamese'/><category term='chọn việc'/><category term='Android'/><category term='việc làm'/><category term='Demo'/><category term='ListView'/><title type='text'>Android development experience sharing</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bino-android.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bino-android.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tran Vu Tat Binh</name><uri>http://www.blogger.com/profile/10181328796408417169</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/-9I9XNtBo6fA/TlcE7i52KJI/AAAAAAAAAKU/6KQH6fEqi1w/s220/avatar10.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2279248080004909877.post-1581777457174407818</id><published>2011-08-26T09:26:00.001+07:00</published><updated>2011-08-26T09:28:03.033+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phỏng vấn'/><category scheme='http://www.blogger.com/atom/ns#' term='việc làm'/><category scheme='http://www.blogger.com/atom/ns#' term='chọn việc'/><title type='text'>Chọn công việc (chọn công ty)</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 1.5em;"&gt;Nếu bạn đi phỏng vấn vào một công ty cho một vị trí bắt đầu được gọi là quan trọng (từ team leader trở lên) thì ngoài các vấn đề thông thường cần nắm như lương bổng, tình hình dự án, môi trường làm việc, thì mình góp vào một số vấn đề cần chú ý sau:&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;strong&gt;1. Bạn sẽ làm việc với ai?&lt;/strong&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;Bạn cần xác định rõ nếu vào công ty bạn sẽ làm việc cũng nhóm với ai, khả năng của họ ra sao. Sếp trực tiếp của bạn là ai, có đủ khả năng thuyết đối với bạn hay không. Sếp lớn của công ty như thế nào, có đủ tầm để lãnh đạo công ty vươn xa hay hay không, có một hoài bão thực sự lớn và một định hướng đủ tốt hay không? Ban lãnh đạo của công ty có khả năng đánh giá chính xác năng lực của các nhân viên trong công ty hay không.&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;strong&gt;2. Bộ sậu chính của công ty như thế nào?&lt;/strong&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;Nếu không phải là A-team thì cũng cần đủ mạnh về năng lực nội tại để cạnh tranh với các đối thủ khác khi công ty lớn dần, hẳn bạn sẽ không muốn làm việc với một bộ sậu mà không đủ năng lực cạnh tranh với các đối thủ lớn. Đặc biệt với các công ty start up, những người đi đầu rất quan trọng, nếu sau này công ty phát triển lên, những người đó không đủ tầm để đi cùng sự phát triển của công ty thì sẽ rất khó khăn trong việc giải quyết vấn đề nhân sự giữa người cũ với người mới. Bạn không thể thành công nếu chỉ làm một mình, và nếu bạn không xem xét nghiêm túc vấn đề này, thì cho dù bạn làm tốt tới đâu kết quả chung của toàn công ty cũng vẫn không được cải thiện nếu các bộ phận khác làm không đủ tốt, và ngược lại.&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;strong&gt;3. Con đường phát triển sự nghiệp của bạn sẽ ra sao sau 2 năm, 5 năm nếu bạn làm việc tốt?&lt;/strong&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;Bạn có thể tham gia một công ty nhưng toàn bộ những vị trí chính yếu của công ty đã có người nắm hoặc bạn được giao làm teamleader nhưng bên trên bạn có 1 programmer lead và 2 CTO cùng một số vị trí quản lý trực tiếp thì liệu sau 5 năm phấn đấu bạn sẽ vươn tới được đâu? Công ty có đầu tư cho bạn phát triển kỹ năng hay không, cam kết đó rõ ràng tới mức nào hay chỉ dừng ở việc nói có và sẽ suy xét?&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;strong&gt;4. Thu nhập tương lai của bạn ra sao?&lt;/strong&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;Nhiều công ty đưa ra cái bẫy thu nhập mà ứng viên sẽ bị mắc kẹt trong đó, đó là mức lương cao nhưng thưởng gần như không có, các lợi ích khác ngoài tiền như cổ phần, bảo hiểm (loại bảo hiểm thực sự tốt ấy), thiết bị làm việc đều không có hoặc rất hiếm hoi. Bạn nên cân nhắc và làm rõ vấn đề này. Tôi đã từng từ chối một công ty offer mức lương cao gấp đôi mức lương hiện tại chỉ bởi vì một năm chỉ có 14 tháng lương, không có gì khác, khi tôi hỏi nếu tôi phát triển bộ phận này thành công, mở rộng qui mô, đạt nhiều thành quả thì tôi có được hương cổ phần của công ty hay không, và dĩ nhiên là không, vậy nên tôi từ chối cơ hội đó. Dĩ nhiên, vấn đề tiền ở tương lai luôn có rủi ro vì không ai chắc chắn được, nhưng cái này thì tùy từng trường hợp và tùy từng đánh giá của mỗi cá nhân.&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;strong&gt;5. Và cuối cùng, đừng quên bạn có 2 tháng thử việc&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;để xác định xem quyết định của mình có đúng hay không&lt;/strong&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;Đôi khi việc bỏ qua 2 tháng thử việc thể hiện sự tin tưởng lần nhau giữa bạn và công ty, nhưng đôi khi, 2 tháng thử việc là thực sự cần thiết nếu bạn thấy trong những điều trên có điều nào đó mà bạn chưa chắc chắn. Đôi khi mọi thứ có vẻ đều ổn khi nhìn từ bên ngoài, nhưng ở trong chăn mới biết chăn có rận, bạn tham gia công ty thì muốn mọi người cùng đoàn kết để hướng tới kết quả chung, nếu công ty có mâu thuận nội bộ thì coi như xong: nhân viên làm việc không phối hợp tốt, chỉ chăm chăm đấu đá, chia bè kết phái để thanh trừng lần nhau… điều đó quả thật rất đáng sợ, và rất hay xảy ra ở các ông ty start up, nơi mà tốc độ phát triển rất nhanh, mâu thuẫn về lợi ích thường xuất hiện khi công ty to ra mà sếp không đủ tinh ý để giải quyết các vấn đề này ngay từ đầu. Vậy nên, 2 tháng thử việc thực sự là quan trọng nếu bạn thấy chư đủ chắc chắn.&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5em;"&gt;Chúc phỏng bạn tìm được một công việc như ý!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2279248080004909877-1581777457174407818?l=bino-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bino-android.blogspot.com/feeds/1581777457174407818/comments/default' title='Đăng Nhận xét'/><link rel='replies' type='text/html' href='http://bino-android.blogspot.com/2011/08/chon-cong-viec-chon-cong-ty.html#comment-form' title='0 Nhận xét'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/1581777457174407818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/1581777457174407818'/><link rel='alternate' type='text/html' href='http://bino-android.blogspot.com/2011/08/chon-cong-viec-chon-cong-ty.html' title='Chọn công việc (chọn công ty)'/><author><name>Tran Vu Tat Binh</name><uri>http://www.blogger.com/profile/10181328796408417169</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/-9I9XNtBo6fA/TlcE7i52KJI/AAAAAAAAAKU/6KQH6fEqi1w/s220/avatar10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2279248080004909877.post-6173766169739578535</id><published>2011-08-02T07:38:00.003+07:00</published><updated>2011-08-02T07:42:41.513+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='barcamp'/><title type='text'>Barcamp Saigon 24 tháng 7, một ngày ý nghĩa, học được nhiều điều</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 16px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 1.5em; "&gt;Hôm nay đi&lt;a href="http://www.barcampsaigon.com/"&gt; Barcamp&lt;/a&gt; Sài Gòn, vòng vòng nghe nhiều topic và xem xét tình hình nên cũng ngộ ra được nhiều điều, ghi chép lại và cũng để chia sẻ luôn.&lt;/p&gt;&lt;ol style="padding-top: 0px; padding-right: 10px; padding-bottom: 0px; padding-left: 25px; "&gt;&lt;li&gt;Các công ty công nghệ muốn lớn mạnh thì phải có một đội ngũ nòng cốt cực mạnh và được đầu tư đúng mức. Cái này quá rõ ràng. Khi nghe các topic của VNG và SkunkWorks thì thấy rõ đội ngũ của họ rất mạnh và mạnh toàn diện: server, client (mobile), web, system admin, product team… Như SkunkWorks, nghe về gamification thấy rõ được cái cách họ đưa ra các tiêu chí phát triển sản phẩm, cách đánh giá và học hỏi từ các sản phẩm thành công. Với VNG, đó là khả năng thiết kế hệ thống server với scalability để đáp ứng một lượng cực lớn user mà vẫn hoạt động tốt… nói chung nghe xong là nể. Dĩ nhiên, những người này cũng nhận được những mức đãi ngộ đủ tốt để họ yên lòng chuyên tâm vào công việc và điều kiện làm việc thì được hỗ trợ đầy đủ rồi.&lt;/li&gt;&lt;li&gt;Các sự kiện trong giới công nghệ nói chung là cơ hội tốt để quảng bá hình ảnh của các công ty, đơn cử như barcamp đợt này, lại là SkunkWorks và VNG đã rất thành công, vì đã có những topic hay vũng như thể hiển được năng lực của người đứng nói, qua đó cho thấy hình ảnh công ty có một nền móng tốt, môi trường chuyên nghiệp và có thể vươn xa, cũng như cho thấy vào đó sẽ có nhiều cơ hội phát triển bản thân. Ngược lại, thật tiếc cho JoomlArt và East Agile, bản thân 2 công ty này không hề kém, nhưng những topic họ nói cho thấy sự thiếu chuẩn bị, người nghe không nhận được gì nhiều từ topic cũng như không thể hiện được năng lực của người thuyết trình nói riêng và đội ngũ công ty nói chung. Nói vậy chứ mình biết East Agile là cty có môi trường làm việc và mức đãi ngộ rất tốt ở SG này.&lt;/li&gt;&lt;li&gt;Cơ hội tuyển dụng là ở đây. Khác với các hội chợ việc làm nơi các công ty có các sạp và chỉ quảng cáo về mình qua các tờ rơi, các sản phẩm, và ứng viên nhận thông tin, đăng ký và chờ phỏng vấn. Ở Barcamp, các công ty cho thấy được sức mạnh, tiềm năng của họ qua các topic, người tham gia có cơ hội nhìn nhận tốt hơn. Ngược lại những head hunter cũng được thấy những người có năng lực qua các topic mà họ thuyết trình hoặc qua cách họ đặt câu hỏi, trao đổi với nhau về các vấn đề công nghệ… hoặc có được những reference khá chính xác về một người qua cách trao đổi với họ hoặc những người trong cuộc. Cá nhân mình thấy những người tham gia barcamp thường là những người trẻ năng động, ham học hỏi hoặc là những người đã ở một trình độ nhất định nào đó trong giới công nghệ, nên chất lượng tuyển dụng ở đây sẽ tốt hơn.&lt;/li&gt;&lt;li&gt;Cơ hội việc làm. Rõ ràng, các công ty tới đây quảng bá hình ảnh của mình cũng chỉ trong mục đích tìm người (người làm hoặc đối tác). Và điều hay là khá nhiều cty start up tham gia, cơ hội làm việc tại một cty start up là cơ hội lớn, tốt hơn rất nhiều so với việc tham gia một cty đã đủ to và có các vị trí chủ chốt. Nếu để ý sẽ thấy SkunkWorks cài người vào các topic hay để ngay cuối topic họ lại xin thông tin liên lạc của diễn giả, dĩ nhiên mục đích chính vlà gì thì ai cũng rõ. Ngoài ra, nếu ai ở lại cuối để nghe topic về cách làm một CV ấn tượng sẽ thấy ngay đó là một cơ hội lớn để tham gia một cty start up trụ sở tại Singapore, cho cả sinh viên thực tập luôn nhé.&lt;/li&gt;&lt;li&gt;Dĩ nhiên, đây cũng là cơ hội tăng kiến thức. Hôm nay có 3 topic mà mình nghe thấy giúp cho mình rất nhiều: ZingMe webchat architect (nghe nhiều kinh nghiệm hay về server scalability), Gamification (thiết kế game cần chú ý các tiêu chí nào, các case study chuẩn), How to write a cv/resumes that gets you hired in a startup (kinh nghiệm làm cv đơn giản, hiệu quả và hướng tới đối tượng tuyển dụng). Ngoài ra còn có một số topic hay nhưng mình không có thời gian nghe nên không liệt kê ra ở đây.&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 1.5em; "&gt; &lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 1.5em; "&gt;Nhìn chung lại thì hôm nay là một ngày ý nghĩa, mình đúc rút được nhiều điều dù trước đây đã thấy nhưng chưa hề hệ thống lại. Cũng có nhiều suy nghĩ mới. Nhưng ngay trước mắt, mình nên cập nhật CV cho tốt hơn, chứ như hiện tại thì chưa đủ tốt, nghe xong thì phải làm ngay chứ, vậy mới có tinh thần học hỏi  &lt;strong&gt;&lt;a href="http://www.linkedin.com/in/tranvutatbinh"&gt;http://www.linkedin.com/in/tranvutatbinh&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 1.5em; "&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0ApL0FA6RXgX6dFZNeml2V1VzSldpc21rTGxJOV9UQ0E&amp;amp;hl=en_US&amp;amp;ndplr=1#gid=0"&gt;Danh sách các topic tại đây&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2279248080004909877-6173766169739578535?l=bino-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bino-android.blogspot.com/feeds/6173766169739578535/comments/default' title='Đăng Nhận xét'/><link rel='replies' type='text/html' href='http://bino-android.blogspot.com/2011/08/barcamp-saigon-24-thang-7-mot-ngay-y.html#comment-form' title='0 Nhận xét'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/6173766169739578535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/6173766169739578535'/><link rel='alternate' type='text/html' href='http://bino-android.blogspot.com/2011/08/barcamp-saigon-24-thang-7-mot-ngay-y.html' title='Barcamp Saigon 24 tháng 7, một ngày ý nghĩa, học được nhiều điều'/><author><name>Tran Vu Tat Binh</name><uri>http://www.blogger.com/profile/10181328796408417169</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/-9I9XNtBo6fA/TlcE7i52KJI/AAAAAAAAAKU/6KQH6fEqi1w/s220/avatar10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2279248080004909877.post-5474728219767741213</id><published>2011-01-13T21:35:00.007+07:00</published><updated>2011-01-17T01:20:16.093+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Demo'/><category scheme='http://www.blogger.com/atom/ns#' term='ListView'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Ví dụ làm loading ở cuối ListView và tự động load thêm dữ liệu</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LB0Px_lZdmM/TS8UBRU7nXI/AAAAAAAAAEE/Qzzwp-YysKM/s1600/device2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://2.bp.blogspot.com/_LB0Px_lZdmM/TS8UBRU7nXI/AAAAAAAAAEE/Qzzwp-YysKM/s320/device2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5561686076889472370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LB0Px_lZdmM/TS8UBO6YogI/AAAAAAAAAD8/W5QC9cLw2Bs/s1600/device1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://2.bp.blogspot.com/_LB0Px_lZdmM/TS8UBO6YogI/AAAAAAAAAD8/W5QC9cLw2Bs/s320/device1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5561686076241256962" /&gt;&lt;/a&gt;&lt;br /&gt;Nếu các bạn dùng ứng dụng Gmail, Android Market thì sẽ thấy trong các listview ở dưới cùng đều có hiện một cái loading animation sẽ load thêm dữ liệu khi mình scroll xuống tới cái loading đó. Hôm nay mình sẽ demo cách để làm việc này, khá đơn giản thôi.&lt;div&gt;Các bạn có sẵn code của list14 trong ApiDemos rồi, copy cái adapter đó ra dùng cho tiện nhé. Trong cái adapter đó, các bạn thêm giúp một hàm appendItems() để có thể nối thêm dữ liệu vào adapter hiện hành:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;public void appendItems(ArrayList&lt;string&gt; items) {&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;mItems.addAll(items);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;notifyDataSetChanged();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Với ListView của mình, các bạn cần thêm vào một FooterView chính là cái hiển thị loading đó, lưu ý cơ bản là chỉ có thể thêm footer/header vào trong ListView trước khi setAdapter, xòn xóa thì lúc nào cũng được&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;LayoutInflater inflater = LayoutInflater.from(this);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;mLoadMoreFooter = inflater.inflate(R.layout.loading_footer_item, null);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;getListView().addFooterView(mLoadMoreFooter);&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rồi, giờ cần bắt sự kiện khi nào mình scroll list tới cuối và cái loading được hiện lên thì mình sẽ load thêm dữ liệu mới và add vào list, trong sự kiện onScroll() của ListView mình sẽ xử lý như sau:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;public void onScroll(AbsListView view, int firstVisibleItem,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;int visibleItemCount, int totalItemCount) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// minus 1 here because the total list item count include the&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// loading footer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if (view.getLastVisiblePosition() &gt;= totalItemCount - 1)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;checkLoadMore();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rồi, cái hàm checkLoadMore đơn giản chỉ là kiểm tra xem lúc đó có đang load dữ liệu chưa, dĩ nhiên nếu đang load dữ liệu rồi thì mình ko load thêm làm gì nữa, còn nếu chưa thì mình bắt đầu load thêm dữ liệu, vậy thôi&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;private void checkLoadMore() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if (mLoading)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;return;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; * if the loading footer is still there, then we will load more items&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if (getListView().getFooterViewsCount() != 0) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;loadMoreItems();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;private void loadMoreItems() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;mLoading = true;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;new Thread() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public void run() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;// in this example, we just simply wait for 2 seconds&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;Thread.sleep(2000);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;Message msg = mMainhandler.obtainMessage(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;      &lt;/span&gt;MSG_APPEND_MORE_ITEMS, generateList());&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;mMainhandler.sendMessage(msg);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;} catch (InterruptedException e) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;e.printStackTrace();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}.start();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hàm loadMoreItems() thì vì đây là ví dụ nên mình chỉ cho làm mỗi việc là đợi 2 giây rồi tạo dữ liệu giả ra, coi như là đã lấy được dữ liệu từ server về rồi chẳng hạn. Hàm generateList() tạo ra một list với 15 String.&lt;/div&gt;&lt;div&gt;Vì mình load dữ liệu ở một thread riêng biệt, mà khi muốn cập nhật trên giao diện (chụ thể ở đây là ListView) thì mình cần phải làm trong main thread, nên mình sẽ gửi một message tới handler của main thread để xử lý.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;switch (msg.what) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case MSG_APPEND_MORE_ITEMS:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ArrayList&lt;string&gt; newData = (ArrayList&lt;string&gt;) msg.obj;&lt;/string&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;if (mAdapter == null) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mAdapter = new SimpleAdapter(LoadingListDemoActivity.this,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;newData);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;setListAdapter(mAdapter);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mAdapter.appendItems(newData);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// if the list we get from server is smaller than 15 (in this&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// example)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// then that means there's nothing more to get, remove the&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// loading item now&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;if (newData.size() &lt;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;getListView().removeFooterView(mLoadMoreFooter);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;mLoading = false;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Đoạn code ở trên là: nếu như dữ liệu lấy về không đủ số lượng đã yêu cầu thì hiểu như là đã khôngcòn gì để load thêm nữa, vậy thì sẽ xóa cái loading ra khỏi list, vậy là xong :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Đây là toàn bộ code của Activity:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;package tvtbinh.bino.demo.loadingfooter;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import java.util.ArrayList;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.app.ListActivity;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.content.Context;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.graphics.Bitmap;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.graphics.BitmapFactory;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.os.Bundle;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.os.Handler;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.os.Message;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.view.LayoutInflater;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.view.View;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.view.ViewGroup;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.widget.AbsListView;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.widget.BaseAdapter;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.widget.ImageView;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.widget.TextView;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;import android.widget.AbsListView.OnScrollListener;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;public class LoadingListDemoActivity extends ListActivity {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private SimpleAdapter mAdapter;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private View mLoadMoreFooter;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private boolean mLoading;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private static final int MSG_APPEND_MORE_ITEMS = 0;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private static final int NUMBER_OF_ITEMS_REQUESTED = 15;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; * Use this field to count how many trunks that we have loaded if it's more&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; * than 4 then we will not load anymore&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private int mTrunksCount = 0;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;protected void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;super.onCreate(savedInstanceState);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// inflate the loading item and add to the ListView&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// we all know that the footers/headers must be addded before setting&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// the adapter for ListView&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;LayoutInflater inflater = LayoutInflater.from(this);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;mLoadMoreFooter = inflater.inflate(R.layout.loading_footer_item, null);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;getListView().addFooterView(mLoadMoreFooter);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;getListView().setOnScrollListener(mScrollListener);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;mLoading = false;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;mAdapter = new SimpleAdapter(LoadingListDemoActivity.this,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;new ArrayList&lt;string&gt;());&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;setListAdapter(mAdapter);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; * A mocking method for getting data from some source asynchronously&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private void loadMoreItems() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;mLoading = true;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;new Thread() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;public void run() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;// in this example, we just simply wait for 2 seconds&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;Thread.sleep(2000);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;Message msg = mMainhandler.obtainMessage(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;MSG_APPEND_MORE_ITEMS, generateList());&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;mMainhandler.sendMessage(msg);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;} catch (InterruptedException e) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;e.printStackTrace();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}.start();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; * Generate an arrayList with 15 strings&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private ArrayList&lt;string&gt; generateList() {&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ArrayList&lt;string&gt; results = new ArrayList&lt;string&gt;();&lt;/string&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;mTrunksCount++;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;if (mTrunksCount &lt;= 4) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;for (int i = 0; i &lt;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;results.add(String.valueOf(System.currentTimeMillis()));&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;return results;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private Handler mMainhandler = new Handler() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public void handleMessage(Message msg) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;switch (msg.what) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;case MSG_APPEND_MORE_ITEMS:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;ArrayList&lt;string&gt; newData = (ArrayList&lt;string&gt;) msg.obj;&lt;/string&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;if (mAdapter == null) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;mAdapter = new SimpleAdapter(LoadingListDemoActivity.this,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;newData);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;setListAdapter(mAdapter);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;mAdapter.appendItems(newData);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;// if the list we get from server is smaller than 15 (in this&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;// example)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;// then that means there's nothing more to get, remove the&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;// loading item now&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;if (newData.size() &lt;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;getListView().removeFooterView(mLoadMoreFooter);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;mLoading = false;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;break;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; * Check if should load more item at this time&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private void checkLoadMore() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;if (mLoading)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt; * if the loading footer is still there, then we will load more items&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt; */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;if (getListView().getFooterViewsCount() != 0) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;loadMoreItems();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private OnScrollListener mScrollListener = new OnScrollListener() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public void onScrollStateChanged(AbsListView view, int scrollState) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// We have nothing to do with this right now&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public void onScroll(AbsListView view, int firstVisibleItem,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;int visibleItemCount, int totalItemCount) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// minus 1 here because the total list item count include the&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// loading footer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;if (view.getLastVisiblePosition() &gt;= totalItemCount - 1)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;checkLoadMore();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;private static class SimpleAdapter extends BaseAdapter {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;private ArrayList&lt;string&gt; mItems;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;private LayoutInflater mInflater;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;private Bitmap mIcon1;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;private Bitmap mIcon2;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public SimpleAdapter(Context context, ArrayList&lt;string&gt; items) {&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mItems = new ArrayList&lt;string&gt;(items);&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mInflater = LayoutInflater.from(context);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// Icons bound to the rows.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mIcon1 = BitmapFactory.decodeResource(context.getResources(),&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;R.drawable.icon48x48_1);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mIcon2 = BitmapFactory.decodeResource(context.getResources(),&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;R.drawable.icon48x48_2);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public void appendItems(ArrayList&lt;string&gt; items) {&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;mItems.addAll(items);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;notifyDataSetChanged();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public int getCount() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;if (mItems == null) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;return 0;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return mItems.size();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public Object getItem(int position) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return mItems.get(position);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public long getItemId(int position) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return position;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public View getView(int position, View convertView, ViewGroup parent) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;ViewHolder holder;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;if (convertView == null) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;convertView = mInflater.inflate(R.layout.list_item_icon_text,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;      &lt;/span&gt;null);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;holder = new ViewHolder();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;holder.text = (TextView) convertView.findViewById(R.id.text);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;holder.icon = (ImageView) convertView.findViewById(R.id.icon);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;convertView.setTag(holder);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;holder = (ViewHolder) convertView.getTag();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;holder.text.setText(mItems.get(position));&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;holder.icon.setImageBitmap((position &amp;amp; 1) == 1 ? mIcon1 : mIcon2);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return convertView;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;static class ViewHolder {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;TextView text;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;ImageView icon;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2279248080004909877-5474728219767741213?l=bino-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bino-android.blogspot.com/feeds/5474728219767741213/comments/default' title='Đăng Nhận xét'/><link rel='replies' type='text/html' href='http://bino-android.blogspot.com/2011/01/vi-du-lam-loading-o-cuoi-listview-va-tu.html#comment-form' title='3 Nhận xét'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/5474728219767741213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/5474728219767741213'/><link rel='alternate' type='text/html' href='http://bino-android.blogspot.com/2011/01/vi-du-lam-loading-o-cuoi-listview-va-tu.html' title='Ví dụ làm loading ở cuối ListView và tự động load thêm dữ liệu'/><author><name>Tran Vu Tat Binh</name><uri>http://www.blogger.com/profile/10181328796408417169</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/-9I9XNtBo6fA/TlcE7i52KJI/AAAAAAAAAKU/6KQH6fEqi1w/s220/avatar10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LB0Px_lZdmM/TS8UBRU7nXI/AAAAAAAAAEE/Qzzwp-YysKM/s72-c/device2.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2279248080004909877.post-6707861596792772547</id><published>2009-02-14T22:47:00.001+07:00</published><updated>2011-01-17T01:20:34.270+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Chương trình chặn tin nhắn</title><content type='html'>&lt;div style="text-align: left;"&gt;Mình viết chương trình này chỉ mang tính chất thử nghiệm, giao diện bằng tiếng Việt, không chau chuốt nhiều và đang trong giai đoạn mời dùng thử nên có gì các bạn cho ý kiến nhé.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Chương trình này cho phép nhập vào một số điện thoại cần chặn tin nhắn hoặc lấy trực tiếp từ danh bạ. Tuy nhiên, vì cấu trúc bảo mật của Android nên các bạn phải tắt chế độ tự động báo tin nhắn đến của ứng dụng Messaging (chương trình của mình sẽ lo chuyện này), cách tắt như sau:&lt;/div&gt;&lt;div&gt;      -Vào ứng dụng messaging, chọn menu, setting:&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_LB0Px_lZdmM/SZbpqBytlSI/AAAAAAAAAAk/18PaAJYcs8A/s320/device.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5302682519520253218" /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;      -Sau đó bỏ chọn cái thông báo khi có tin nhắn mới:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LB0Px_lZdmM/SZbqTMhKfwI/AAAAAAAAAAs/I1qUZH-0x5c/s1600-h/device.png"&gt;&lt;img src="http://3.bp.blogspot.com/_LB0Px_lZdmM/SZbqTMhKfwI/AAAAAAAAAAs/I1qUZH-0x5c/s320/device.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5302683226774077186" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 214px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Vậy là xong!&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Mình rất lưu ý là đây chỉ là bản dùng thử, chức năng chính tất nhiên là chạy ổn,  đã test thử. Tuy nhiên, rất có thể còn thiếu sót, mong nhận được góp ý!&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Link down tại đây:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;http://rapidshare.com/files/198036278/Block_SMS.apk&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2279248080004909877-6707861596792772547?l=bino-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bino-android.blogspot.com/feeds/6707861596792772547/comments/default' title='Đăng Nhận xét'/><link rel='replies' type='text/html' href='http://bino-android.blogspot.com/2009/02/chuong-trinh-chan-tin-nhan.html#comment-form' title='1 Nhận xét'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/6707861596792772547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/6707861596792772547'/><link rel='alternate' type='text/html' href='http://bino-android.blogspot.com/2009/02/chuong-trinh-chan-tin-nhan.html' title='Chương trình chặn tin nhắn'/><author><name>Tran Vu Tat Binh</name><uri>http://www.blogger.com/profile/10181328796408417169</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/-9I9XNtBo6fA/TlcE7i52KJI/AAAAAAAAAKU/6KQH6fEqi1w/s220/avatar10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LB0Px_lZdmM/SZbpqBytlSI/AAAAAAAAAAk/18PaAJYcs8A/s72-c/device.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2279248080004909877.post-1489166072253636040</id><published>2009-01-29T13:19:00.001+07:00</published><updated>2011-01-17T01:20:40.498+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vietnamese'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Ứng dụng nhắn tin bằng tiếng Việt</title><content type='html'>Mấy hôm nay Tết về quê chơi cũng rảnh rỗi nên tranh thủ chút thời gian viết một ứng dụng nhỏ hy vọng giúp ích cho cộng đồng Android Việt Nam.&lt;div&gt;Ứng dụng này hỗ trợ gửi tin nhắn bằng tiếng Việt, thực ra chủ yếu là gõ tiếng Việt thôi, gửi tin nhắn là làm cho có chức năng, chứ chỉ gõ tiếng Việt không thì cũng kì kì. Mà cái bộ gõ này do tui tự viết, lại chỉ tranh thủ thời gian rảnh rỗi nên nó cũng bưởi lắm, nhưng đại khái là dùng được (còn bưởi như thế nào thì mọi người dùng sẽ biết vậy). &lt;/div&gt;&lt;div&gt;Lưu ý quan trọng là mấy cái từ có viết hoa dễ bị die lắm:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_LB0Px_lZdmM/SYFNFeqdz7I/AAAAAAAAAAM/nkeSO7YV3fg/s320/device.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5296599393290276786" /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Đại loại nhìn giao diện như trên, soạn tin tối đa là 160 kí tự (tuy nhiên lưu ý nếu nhắn tiếng Việt mà 160 là thành 2 tin).&lt;/div&gt;&lt;div style="text-align: left;"&gt;Qua màn hình chọn số gửi tin nó nhìn như sau:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/_LB0Px_lZdmM/SYFPDoEc2vI/AAAAAAAAAAU/UqB-7bDorhc/s320/device.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5296601560478702322" /&gt;&lt;div style="text-align: left;"&gt;Có thể lấy số từ danh bạ hoặc nhập số trực tiếp!&lt;/div&gt;&lt;div style="text-align: left;"&gt;Sau đó bấm gửi tin là xong!&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Cái này làm chỉ ở mức có thể dùng được, thực sự là không được tốt cho lắm. Nếu có anh em nào dùng mà muốn sửa chỗ nào thì cho tui ý kiến nhé (có dịa chỉ email trong phần about của ứng dụng)&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Ai da, không biết attach file làm sao nữa! Dùng rapidshare vậy :(&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;http://rapidshare.com/files/190983817/Vietnamese_SMS.apk &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2279248080004909877-1489166072253636040?l=bino-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bino-android.blogspot.com/feeds/1489166072253636040/comments/default' title='Đăng Nhận xét'/><link rel='replies' type='text/html' href='http://bino-android.blogspot.com/2009/01/ung-dung-nhan-tin-bang-tieng-viet.html#comment-form' title='4 Nhận xét'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/1489166072253636040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2279248080004909877/posts/default/1489166072253636040'/><link rel='alternate' type='text/html' href='http://bino-android.blogspot.com/2009/01/ung-dung-nhan-tin-bang-tieng-viet.html' title='Ứng dụng nhắn tin bằng tiếng Việt'/><author><name>Tran Vu Tat Binh</name><uri>http://www.blogger.com/profile/10181328796408417169</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/-9I9XNtBo6fA/TlcE7i52KJI/AAAAAAAAAKU/6KQH6fEqi1w/s220/avatar10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LB0Px_lZdmM/SYFNFeqdz7I/AAAAAAAAAAM/nkeSO7YV3fg/s72-c/device.png' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
