package com.bigdo.app; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; import com.bigdo.common.BDSQLiteHelper; import com.bigdo.common.Login; import com.bigdo.common.RConfig; import com.bigdo.common.RState; import com.bigdo.common.User; import com.bigdo.controls.IXListViewListener; import com.bigdo.controls.XListView; import com.bigdo.util.WSCheck; import com.bigdo.util.WSHelper; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; public class Me_GrowthHistory_Activity extends BaseActivity implements IXListViewListener { XListView grow_list; ArrayList<HashMap<String, Object>> data; GrowAdapter ad; TextView no_data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.me_growthhistory_activity); View com_title = (View) this.findViewById(R.id.bd_title_host); TextView bd_title_name = (TextView) com_title .findViewById(R.id.bd_title_name); bd_title_name.setText("我的成长史"); TextView bd_title_operate = (TextView) com_title .findViewById(R.id.bd_title_operate); bd_title_operate.setText("添 加"); bd_title_operate.setVisibility(View.VISIBLE); bd_title_operate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { addGrow(); } }); ImageButton bd_title_back = (ImageButton) com_title .findViewById(R.id.bd_title_back); bd_title_back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); data = new ArrayList<HashMap<String, Object>>(); grow_list = (XListView) this.findViewById(R.id.growthhistory_list); grow_list.setPullLoadEnable(false); grow_list.setXListViewListener(this); grow_list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { arg2--; if (arg2 < 0) { arg2 = 0; } goGrowDetail(arg2); } }); ad = new GrowAdapter(); grow_list.setAdapter(ad); no_data = (TextView) this.findViewById(R.id.grow_list_no_data); loadData(); } public void loadData() { getGrow(); if (data.size() <= 0) { grow_list.startAutoHeightRefresh(1); } } private void addGrow() { Intent i = new Intent(); i.setClass(this, Me_Edit_GrowthHistory_Activity.class); i.putExtra("tag", "add"); i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivityForResult(i, 2); } private void startGetGrow() { checkHasData(true); User user = Login.get(this); if (user != null) { JSONObject jparam = new JSONObject(); try { jparam.put("user", user.user); } catch (Exception e) { checkHasData(false); this.messageBox("准备请求参数出错."); grow_list.stopRefresh(); return; } String url = RConfig.myGrow(this); String data = jparam.toString(); WSHelper ws = new WSHelper(this, "", false, handler, url, "", WSHelper.getStringEntity(data), 0, 0, 0, 0, WSHelper.POST); ws.start(); Log.e("startGetGrow", url); Log.e("startGetGrow_data", data); } else { showInfo("请先登录"); } } private void checkHasData(boolean isoping) { if (no_data != null) { if (!isoping && data.size() <= 0) { no_data.setVisibility(LinearLayout.VISIBLE); } else { no_data.setVisibility(LinearLayout.GONE); } } } private void goGrowDetail(int p) { if (data != null) { HashMap<String, Object> mp = data.get(p); if (mp != null) { int idgrow = (Integer) mp.get("idgrow"); Intent i = new Intent(); i.setClass(this, Me_GrowthHistory_Detail_Activity.class); i.putExtra("idgrow", idgrow); i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivityForResult(i, 1); } } } @Override public void onRefresh(XListView xListView, int tag, int requestCode) { startGetGrow(); } @Override public void onLoadMore(XListView xListView, int tag, int requestCode) { } private int getGrow() { int count = 0; if (data != null && ad != null) { data.clear(); BDSQLiteHelper sqlobj = null; SQLiteDatabase sqlobj_r = null; Cursor cu = null; try { sqlobj = new BDSQLiteHelper(this); sqlobj_r = sqlobj.getReadableDatabase(); String sqlt = "select * from grow order by idgrow desc"; cu = sqlobj_r.rawQuery(sqlt, null); int idgrow; String title, createtime; while (cu.moveToNext()) { idgrow = cu.getInt(cu.getColumnIndex("idgrow")); title = cu.getString(cu.getColumnIndex("title")); createtime = cu.getString(cu.getColumnIndex("createtime")); if (createtime != null && createtime.length() > 10) { createtime = createtime.substring(0, 10); } HashMap<String, Object> map = new HashMap<String, Object>(); map.put("idgrow", idgrow); map.put("title", title); map.put("createtime", createtime); data.add(map); count++; } } catch (Exception e2) { messageBox("加载本地缓存成长史出错"); } try { if (cu != null) { cu.close(); cu = null; } } catch (Exception ex) { } try { if (sqlobj_r != null) { sqlobj_r.close(); sqlobj_r = null; } } catch (Exception ex) { } try { if (sqlobj != null) { sqlobj.close(); sqlobj = null; } } catch (Exception ex) { } if (ad != null) { ad.notifyDataSetChanged(); } checkHasData(false); } return count; } private void update(JSONObject jresult) { if (grow_list != null && data != null && ad != null) { boolean addtag = false, deltag = false, uptag = false; if (jresult != null) { BDSQLiteHelper sqlobj = null; SQLiteDatabase sqlobj_w = null; Cursor cu = null; try { sqlobj = new BDSQLiteHelper(this); sqlobj_w = sqlobj.getWritableDatabase(); JSONArray item = jresult.getJSONArray("item"); if (item != null && item.length() > 0) { int add_count = 0, update_count = 0; try { try { sqlobj_w.delete("grow", null, null); data.clear(); // ad.notifyDataSetChanged(); } catch (Exception ee) { } int lg = item.length(); String title = "", content = "", createtime = ""; int idgrow; long c = 0; for (int i = 0; i < lg; i++) { JSONObject vo = (JSONObject) item.opt(i); if (vo != null) { idgrow = vo.getInt("idgrow"); title = vo.getString("title"); content = vo.getString("content"); createtime = vo.getString("createtime"); ContentValues cv = new ContentValues(); cv.put("idgrow", idgrow); cv.put("title", title); cv.put("content", content); cv.put("createtime", createtime); cu = sqlobj_w .rawQuery( "select idgrow from grow where idgrow = ? ", new String[] { idgrow + "" }); c = cu.getCount(); try { if (cu != null) { cu.close(); } } catch (Exception ex) { } cu = null; if (c <= 0) { c = sqlobj_w.insert("grow", "", cv); add_count++; if (c > 0) { addtag = true; } } else { cv.remove("idgrow"); c = sqlobj_w.update("grow", cv, "idgrow = ?", new String[] { idgrow + "" }); update_count += c; if (c > 0) { uptag = true; } } cv = null; } } } catch (Exception e) { messageBox("缓存成长史数据出错."); } String msg = ""; if (add_count > 0) { msg = "亲!新加载了 " + add_count + " 条成长史"; } if (update_count > 0) { if (msg.length() > 0) { msg += ","; } else { msg = "亲! "; } msg = "更新了 " + update_count + " 条成长史."; } if (msg.length() > 0) { this.showInfo(msg); } } else { showInfo("亲!没有新成长史了哦."); } } catch (Exception e) { } try { if (cu != null) { cu.close(); cu = null; } } catch (Exception ex) { } try { if (sqlobj_w != null) { sqlobj_w.close(); sqlobj_w = null; } } catch (Exception ex) { } try { if (sqlobj != null) { sqlobj.close(); sqlobj = null; } } catch (Exception ex) { } } } } @SuppressLint("HandlerLeak") protected Handler handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.arg1 == RState.WSCall) { JSONObject jresult = WSCheck.Json( Me_GrowthHistory_Activity.this, msg); if (grow_list != null) { update(jresult); getGrow(); grow_list.stopRefresh(); } } } }; public class GrowAdapter extends BaseAdapter { private LayoutInflater mInflater; public GrowAdapter() { this.mInflater = LayoutInflater .from(Me_GrowthHistory_Activity.this); } @Override public int getCount() { if (data != null) { return data.size(); } return 0; } @Override public Object getItem(int arg0) { if (data != null) { return data.get(arg0); } return null; } @Override public long getItemId(int arg0) { return arg0; } String title, createtime; @Override public View getView(int arg0, View arg1, ViewGroup arg2) { Holder holder = null; if (arg1 == null) { holder = new Holder(); arg1 = mInflater.inflate(R.layout.me_grow_item, null); holder.vline = (View) arg1 .findViewById(R.id.me_grow_item_vline); holder.title = (TextView) arg1 .findViewById(R.id.me_grow_item_title); holder.date = (TextView) arg1 .findViewById(R.id.me_grow_item_date); arg1.setTag(holder); } else { holder = (Holder) arg1.getTag(); } if (arg0 == 0 || arg0 == data.size()) { holder.vline.setVisibility(View.GONE); } else { holder.vline.setVisibility(View.VISIBLE); } Map<String, Object> mp = data.get(arg0); title = mp.get("title") != null ? (mp.get("title") + "") : ""; createtime = mp.get("createtime") != null ? (mp.get("createtime") + "") : ""; holder.title.setText(title); holder.date.setText(createtime); return arg1; } } private class Holder { TextView title, date; View vline; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 2 && resultCode == 1) { getGrow(); } else if (requestCode == 1 && resultCode == 1) { getGrow(); } } @Override public void onClearData() { // TODO Auto-generated method stub } @Override public void onVideoBroadcast(Intent intent) { // TODO Auto-generated method stub } }