HomeProtocol
public class HomeProtocol extends BaseProtocol<List<AppInfo>>{
// 1 把整個json檔案寫到一個本地檔案中 **
// 2 把每條資料都摘出來存到資料庫中
// 見到大括號 就用JsonObject ,見到中括號就是JsonArray
public List<AppInfo> paserJson(String json) {
List<AppInfo> appInfos=new ArrayList<AppInfo>();
try {
JSONObject jsonObject=new JSONObject(json);
JSONArray jsonArray = jsonObject.getJSONArray("list");
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObj = jsonArray.getJSONObject(i);
long id=jsonObj.getLong("id");
String name = jsonObj.getString("name");
String packageName=jsonObj.getString("packageName");
String iconUrl = jsonObj.getString("iconUrl");
float stars=Float.parseFloat(jsonObj.getString("stars"));
long size=jsonObj.getLong("size");
String downloadUrl = jsonObj.getString("downloadUrl");
String des = jsonObj.getString("des");
AppInfo info=new AppInfo(id, name, packageName, iconUrl, stars, size, downloadUrl, des);
appInfos.add(info);
}
return appInfos;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
@Override
public String getKey() {
return "home";
}
}
BaseListView (自定義listview)
public class BaseListView extends ListView {
public BaseListView(Context context) {
super(context);
init();
}
public BaseListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public BaseListView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// setSelector 點選顯示的顏色
// setCacheColorHint 拖拽的顏色
// setDivider 每個條目的間隔 的分割線
this.setSelector(R.drawable.nothing); // 什麼都沒有
this.setCacheColorHint(R.drawable.nothing);
this.setDivider(UiUtils.getDrawalbe(R.drawable.nothing));
}
}
HomeFragment
public class HomeFragment extends BaseFragment {
private List<AppInfo> datas;
// 當Fragment掛載的activity建立的時候呼叫
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
show();
}
public View createSuccessView() {
BaseListView listView=new BaseListView(UiUtils.getContext());
listView.setAdapter(new HomeAdapter());
// 第二個引數 慢慢滑動的時候是否載入圖片 false 載入 true 不載入
// 第三個引數 飛速滑動的時候是否載入圖片 true 不載入
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
bitmapUtils.configDefaultLoadingImage(R.drawable.ic_default); // 設定如果圖片載入中顯示的圖片
bitmapUtils.configDefaultLoadFailedImage(R.drawable.ic_default);// 載入失敗顯示的圖片
return listView;
}
private class HomeAdapter extends BaseAdapter{
@Override
public int getCount() {
return datas.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder;
if(convertView==null){
view=View.inflate(UiUtils.getContext(), R.layout.item_app, null);
holder=new ViewHolder();
holder.item_icon=(ImageView) view.findViewById(R.id.item_icon);
holder.item_title=(TextView) view.findViewById(R.id.item_title);
holder.item_size=(TextView) view.findViewById(R.id.item_size);
holder.item_bottom=(TextView) view.findViewById(R.id.item_bottom);
holder.item_rating=(RatingBar) view.findViewById(R.id.item_rating);
view.setTag(holder);
}else{
view=convertView;
holder=(ViewHolder) view.getTag();
}
AppInfo appInfo=datas.get(position);
holder.item_title.setText(appInfo.getName());// 設定應用程式的名字
String size=Formatter.formatFileSize(UiUtils.getContext(), appInfo.getSize());
holder.item_size.setText(size);
holder.item_bottom.setText(appInfo.getDes());
float stars = appInfo.getStars();
holder.item_rating.setRating(stars); // 設定ratingBar的值
String iconUrl = appInfo.getIconUrl(); //http://127.0.0.1:8090/image?name=app/com.youyuan.yyhl/icon.jpg
// 顯示圖片的控制元件
bitmapUtils.display(holder.item_icon, HttpHelper.URL+"image?name="+iconUrl);
return view;
}
@Override
public Object getItem(int position) {
return datas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
static class ViewHolder{
ImageView item_icon;
TextView item_title,item_size,item_bottom;
RatingBar item_rating;
}
//檢測資料
public LoadResult load() {
HomeProtocol protocol=new HomeProtocol();
datas = protocol.load(0);
return checkData(datas);
}
}