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
}
}