package com.tianxia.app.floworld.identification;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.tianxia.app.floworld.R;
import com.tianxia.app.floworld.appreciate.AppreciateApi;
import com.tianxia.app.floworld.appreciate.AppreciateLatestActivity;
import com.tianxia.app.floworld.cache.ConfigCache;
import com.tianxia.app.floworld.model.AppreciateCategoryInfo;
import com.tianxia.lib.baseworld.activity.AdapterActivity;
import com.tianxia.lib.baseworld.main.MainTabFrame;
import com.tianxia.lib.baseworld.sync.http.AsyncHttpClient;
import com.tianxia.lib.baseworld.sync.http.AsyncHttpResponseHandler;
import com.tianxia.widget.image.SmartImageView;
public class IdentificationTabActivity extends AdapterActivity<AppreciateCategoryInfo> {
private LinearLayout mAppLoadingLinearLayout;
private TextView mAppLoadingTip = null;
private ProgressBar mAppLoadingPbar = null;
private SmartImageView mItemImageView = null;
private TextView mItemTextView = null;
private TextView mItemCount = null;
private Intent mIdentificationIntent = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAppLoadingLinearLayout = (LinearLayout) findViewById(R.id.app_loading);
mAppLoadingLinearLayout.getLayoutParams().height = MainTabFrame.mainTabContainerHeight;
mAppLoadingTip = (TextView) findViewById(R.id.app_loading_tip);
mAppLoadingPbar = (ProgressBar) findViewById(R.id.app_loading_pbar);
loadGridView();
}
private void loadGridView(){
String cacheConfigString = ConfigCache.getUrlCache(IdentificationApi.IDENTIFICATION_CONFIG_URL);
if (cacheConfigString != null) {
setAppreciateCategoryList(cacheConfigString);
mAppLoadingLinearLayout.setVisibility(View.GONE);
} else {
AsyncHttpClient client = new AsyncHttpClient();
client.get(IdentificationApi.IDENTIFICATION_CONFIG_URL, new AsyncHttpResponseHandler(){
@Override
public void onStart() {
mAppLoadingLinearLayout.setVisibility(View.VISIBLE);
mAppLoadingTip.setVisibility(View.VISIBLE);
mAppLoadingPbar.setVisibility(View.VISIBLE);
listView.setAdapter(null);
}
@Override
public void onSuccess(String result) {
mAppLoadingLinearLayout.setVisibility(View.GONE);
ConfigCache.setUrlCache(result, IdentificationApi.IDENTIFICATION_CONFIG_URL);
setAppreciateCategoryList(result);
}
@Override
public void onFailure(Throwable arg0) {
mAppLoadingPbar.setVisibility(View.GONE);
mAppLoadingTip.setText(R.string.app_loading_fail);
}
});
}
}
private void setAppreciateCategoryList(String jsonString){
mAppLoadingLinearLayout.setVisibility(View.GONE);
try {
JSONObject json = new JSONObject(jsonString);
JSONArray jsonArray = json.getJSONArray("list");
listData = new ArrayList<AppreciateCategoryInfo>();
AppreciateCategoryInfo appreciateCategoryInfo = null;
for(int i = 0; i < jsonArray.length(); i++){
appreciateCategoryInfo = new AppreciateCategoryInfo();
appreciateCategoryInfo.filename = jsonArray.getJSONObject(i).optString("filename");
appreciateCategoryInfo.category = jsonArray.getJSONObject(i).optString("category");
appreciateCategoryInfo.thumbnail = jsonArray.getJSONObject(i).optString("thumbnail");
appreciateCategoryInfo.count = jsonArray.getJSONObject(i).optString("count");
listData.add(appreciateCategoryInfo);
}
} catch (JSONException e) {
e.printStackTrace();
}
adapter = new Adapter(IdentificationTabActivity.this);
listView.setAdapter(adapter);
}
@Override
protected void setLayoutView() {
setContentView(R.layout.identification_tab_activity);
setListView(R.id.identification_list);
}
@Override
protected View getView(int position, View convertView) {
View view = convertView;
if(view == null){
view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.identification_tab_list_item, null);
}
mItemImageView = (SmartImageView) view.findViewById(R.id.item_image);
if (listData != null && position < listData.size()){
mItemImageView.setImageUrl(listData.get(position).thumbnail, R.drawable.app_download_fail, R.drawable.app_download_loading);
}
mItemTextView = (TextView) view.findViewById(R.id.item_category);
mItemTextView.setText(listData.get(position).category + "(" + listData.get(position).count + ")");
mItemCount = (TextView) view.findViewById(R.id.item_count);
mItemCount.setText(listData.get(position).count);
return view;
}
@Override
protected void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
mIdentificationIntent = new Intent(IdentificationTabActivity.this, AppreciateLatestActivity.class);
mIdentificationIntent.putExtra("url", AppreciateApi.APPRECIATE_CATEGORY_BASE_URL + listData.get(position).filename + ".json");
mIdentificationIntent.putExtra("title", listData.get(position).category);
startActivity(mIdentificationIntent);
}
}