編輯:關於Android編程
時間悄悄的走,轉眼來實習已經三個月了,三個月的時間,小編慢慢的成長著,從剛開始的電商項目到現在的車段子項目,小編在走過一個又一個項目的同時,走過了一個又一個戰勝自己的奇跡,每次遇到一個新的技術點,小編就開始搗鼓,搗鼓這回事,真的需要勇氣,搗鼓搗鼓,duang,功能出來了,好開心`(*∩_∩*)′,能力往往是做了才會獲得,而不是有了能力才去做,丫頭加油。小伙伴們可能都在某些app上看見過發現的功能,點擊發現的按鈕自動加載最熱門的信息,在小編最近搗鼓的項目裡面就有這個功能,經過幾天的搗鼓,終於新鮮出爐了,今天這篇博客小編就來簡單的介紹一下如何點擊發現按鈕,自動加載我們所需要的相關信息,希望可以幫助到需要的小伙伴們,還請小伙伴多多指教`(*∩_∩*)′。
首先,我們來編寫我們的實體層,需要用到兩個實體,第一個content如下所示:
package com.jczb.car.bean; import java.util.Date; import java.util.List; import android.R.integer; import android.R.integer; /** * 說明:段子內容實體 * 作者:丁國華 * 時間:2015年9月10日 10:41:43 */ @SuppressWarnings(serial) public class Content extends Entity { /** 內容表標識 */ private int uid; /** 顯示標題 */ private String title; /** 視頻或者圖片路徑 */ private String path; /**詳情*/ private String details; /**頻道類型*/ private String channelType; /**頻道名稱*/ private String channelName; /**作者*/ private String author; /**是否推薦*/ private String isRecommend; /**閱讀或者播放數量*/ private int browseNumber; /**評論數*/ private int commentbrowseNumber; /**贊數*/ private int praiseNumber; /**踩數*/ private int treadNumber; /**發布時間*/ private String issueTime; /**是否收藏*/ private int isCollect; /**關聯視頻*/ private List第二個實體contentVo,具體代碼如下所示:Content; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public String getDetails() { return details; } public void setDetails(String details) { this.details = details; } public String getChannelType() { return channelType; } public void setChannelType(String channelType) { this.channelType = channelType; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getIsRecommend() { return isRecommend; } public void setIsRecommend(String isRecommend) { this.isRecommend = isRecommend; } public int getBrowseNumber() { return browseNumber; } public void setBrowseNumber(int browseNumber) { this.browseNumber = browseNumber; } public int getCommentbrowseNumber() { return commentbrowseNumber; } public void setCommentbrowseNumber(int commentbrowseNumber) { this.commentbrowseNumber = commentbrowseNumber; } public int getPraiseNumber() { return praiseNumber; } public void setPraiseNumber(int praiseNumber) { this.praiseNumber = praiseNumber; } public int getTreadNumber() { return treadNumber; } public void setTreadNumber(int treadNumber) { this.treadNumber = treadNumber; } public String getIssueTime() { return issueTime; } public void setIssueTime(String issueTime) { this.issueTime = issueTime; } public String getChannelName() { return channelName; } public void setChannelName(String channelName) { this.channelName = channelName; } public int getIsCollect() { return isCollect; } public void setIsCollect(int isCollect) { this.isCollect = isCollect; } public List getContent() { return Content; } public void setContent(List content) { Content = content; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } }
package com.jczb.car.bean; import java.util.List; /** *說明: 內容集合,用於Json串的解析 *作者:丁國華 *時間:2015年9月10日 10:38:38 */ @SuppressWarnings(serial) public class ContentVo extends Entity { /** 服務器返回結果:true或false */ private String result; /** 服務器返回的Json串解析為List結合 */ private List接著,來編寫我們的需要調用的接口方法,代碼如下所示:Content; public String getResult() { return result; } public void setResult(String result) { this.result = result; } public List getContent() { return Content; } public void setContent(List content) { Content = content; } }
/** * 說明:發現 * @user 丁國華 * @date 2015-8-31 下午2:10:59 */ public ContentVo discover(boolean isFirst, int contentVoId) throws AppException { ContentVo contentVo = null; // 構建緩存文件的key String key = contentVo_ + contentVoId; // 1.如果聯網則首先從服務器獲取數據 if (isNetworkConnected() &&(isReadDataCache(key) || isFirst)) { try { // 從服務器獲取Content的集合 contentVo = ApiClient.discover(this); // 如果能夠獲取到服務器中的數據則保存到本地緩存,只有保證數據不為空,且獲取到的結果為true的時候才緩存到本地 if (contentVo != null && contentVo.getResult().equals(false)) { contentVo.setCacheKey(key); saveObject(contentVo, key); } } catch (AppException e) { // 如果出現訪問中途斷網,則獲取本地緩存中的數據 contentVo = (ContentVo) readObject(key); // 如果本地緩存中數據為空,則拋出異常 if (contentVo == null) { throw e; } } } // 2.如果未聯網則從緩存中獲取數據 else { contentVo = (ContentVo) readObject(key); if (contentVo == null) { contentVo = new ContentVo(); } return contentVo; } return contentVo; }第三步,我們來編寫我們的xml布局,具體代碼如下所示:
第四步,編寫java類裡面所需要的代碼,如下所示:
package com.jczb.car.ui; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import com.jczb.car.AppContext; import com.jczb.car.AppException; import com.jczb.car.R; import com.jczb.car.bean.Content; import com.jczb.car.bean.ContentVo; /** * 說明:發現功能頁面 * 作者:丁國華 * 時間: 2015-9-2下午2:02:58 */ public class DiscoveryActivity extends Activity implements OnClickListener, OnItemClickListener { //RelativeLayout rlFoundSearch; //ImageView ivTuBiaoSearch; // 聲明用到的幾個控件 private TextView etSearch; private ImageView ivSearch; private ListView lvHotChannel; private RelativeLayout rlFoundSearchEmpty; //private ImageView ivTuBiao; /**解析發現接口用的實體類*/ private ContentVo contentVo = null; /**用來填充ListView的List*/ private List
到此,我們的發現這個功能的一條線就走下來了,最後,我們來看一下我們的運行效果,如下所示:
小編寄語:發現的實現功能,小編就簡單的介紹到這裡,發現實現了,但是小編到現在還是雲裡霧裡,不過沒關系,小編會越挫越勇的,這就是生命的意義,還是那句話對於小編來說,既是挑戰更是機遇,因為知識都是相通的,再者來說,在小編的程序人生中,留下最珍貴的記憶,雖然以後小編不一定從事安卓這個行業,代碼世界裡,很多種事,有的甜蜜,有的溫馨,有的婉轉成歌,有的綿延不息,在這些故事裡,我們唯一的共通之處就是,某年,某月,某個波瀾不驚的日子裡,曾經很愛很愛你!愛你--這段實習的日子裡,安卓帶給小編的種種的驚喜。在 下篇博文中小將和小伙伴們一起來分享,如何輸入關鍵字,搜索出相應內容,敬請期待`(*∩_∩*)′!
面試中經常會問到內存優化,我們在開發過程中也多少會遇到OOM的問題,根據大牛們的博客,記錄下我的學習思路一、為何會OOM?1. 一直以來Andorid手機的內存都比iPh
BottomNavigationView 很早之前就在 Material Design 中出現了,但是直到 Android Support Library 25 中才增加
前不久搞的Android圖片緩存,剛開始引入開源的框架,用著還行,但是在開發中遇到問題,就比如universal-image-loader-1.9.5.jar這個框架吧,
小米手機的WIFI設置是在沒有某WIFI熱點的情況下,即使已經保存了的WIFI密碼也是不顯示的,這樣就造成我們沒法將其刪除.只能再回到原來的WIFI熱點下才