編輯:關於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 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;
}
}
第二個實體contentVo,具體代碼如下所示:
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
到此,我們的發現這個功能的一條線就走下來了,最後,我們來看一下我們的運行效果,如下所示:

小編寄語:發現的實現功能,小編就簡單的介紹到這裡,發現實現了,但是小編到現在還是雲裡霧裡,不過沒關系,小編會越挫越勇的,這就是生命的意義,還是那句話對於小編來說,既是挑戰更是機遇,因為知識都是相通的,再者來說,在小編的程序人生中,留下最珍貴的記憶,雖然以後小編不一定從事安卓這個行業,代碼世界裡,很多種事,有的甜蜜,有的溫馨,有的婉轉成歌,有的綿延不息,在這些故事裡,我們唯一的共通之處就是,某年,某月,某個波瀾不驚的日子裡,曾經很愛很愛你!愛你--這段實習的日子裡,安卓帶給小編的種種的驚喜。在 下篇博文中小將和小伙伴們一起來分享,如何輸入關鍵字,搜索出相應內容,敬請期待`(*∩_∩*)′!
Android內存分析之MAT
面試中經常會問到內存優化,我們在開發過程中也多少會遇到OOM的問題,根據大牛們的博客,記錄下我的學習思路一、為何會OOM?1. 一直以來Andorid手機的內存都比iPh
Android BottomNavigationView底部導航效果
BottomNavigationView 很早之前就在 Material Design 中出現了,但是直到 Android Support Library 25 中才增加
直接應用項目中的Android圖片緩存技術
前不久搞的Android圖片緩存,剛開始引入開源的框架,用著還行,但是在開發中遇到問題,就比如universal-image-loader-1.9.5.jar這個框架吧,
如何刪除小米手機保存的WIFI密碼
小米手機的WIFI設置是在沒有某WIFI熱點的情況下,即使已經保存了的WIFI密碼也是不顯示的,這樣就造成我們沒法將其刪除.只能再回到原來的WIFI熱點下才