/**
*
*/
package coolbuy360.searchhealth;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import coolbuy360.adapter.MemberScoreLogListAdapter;
import coolbuy360.logic.ConstantsSetting;
import coolbuy360.logic.User;
import coolbuy360.pulltorefresh.PullToRefreshBase;
import coolbuy360.pulltorefresh.PullToRefreshListView;
import coolbuy360.pulltorefresh.PullToRefreshBase.Mode;
import coolbuy360.pulltorefresh.PullToRefreshBase.OnRefreshListener2;
import coolbuy360.service.TimestampException;
import coolbuy360.service.searchApp;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
/**
* ��Ա����ֵ��־
* @author yangxc
*
*/
public class MemberScoreLog extends Activity {
public static final int LOADSUCCESS=0;
public static final int LOADERROR=1;
public static final int NETWORKTIMEOUT=-2;
public static final int NETWORKNONE=2;
private PullToRefreshListView refreshListView;
private MemberScoreLogListAdapter adapter;
private int pagesize = ConstantsSetting.QLDefaultPageSize;
//LinearLayout async_begin;
LinearLayout async_error;
View listview_empty_error;
View LoadingView;
Boolean isCompleted = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Ϊ�˳�����
searchApp.getInstance().addActivity(this);
setContentView(R.layout.member_scorelog);
ImageButton actionbar_pre_btn = (ImageButton) this
.findViewById(R.id.actionbar_pre_btn);
actionbar_pre_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MemberScoreLog.this.finish();
overridePendingTransition(R.anim.push_no,R.anim.push_top_out);
}
});
// ========================����ing�Ŀؼ�===============================/
//async_begin = (LinearLayout) findViewById(R.id.async_begin);
//async_begin.setVisibility(View.VISIBLE);
async_error = (LinearLayout) findViewById(R.id.async_error);
LayoutInflater layoutInflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
listview_empty_error= layoutInflater.inflate(R.layout.listview_emptyview_error, null);
adapter = new MemberScoreLogListAdapter(this, new ArrayList<Map<String,String>>());
refreshListView = (PullToRefreshListView) findViewById(R.id.member_scorelog_ptflistview);
LoadingView = layoutInflater.inflate(R.layout.listview_emptyview_loading, null);
refreshListView.setEmptyView(LoadingView);
initPullToRefreshListView(refreshListView);
// ===========================�״μ��ص�����===========================/
new AsyncLoader_Refresh().execute();// ��һ�μ�������
}
/**
* ��ʼ��PullToRefreshListView
*
* @param rtflv
*/
public void initPullToRefreshListView(PullToRefreshListView rtflv) {
rtflv.setMode(Mode.BOTH);
rtflv.setOnRefreshListener(new MyOnRefreshListener(rtflv));
if (adapter != null) {
rtflv.setAdapter(adapter);
}
rtflv.getRefreshableView().setSelector(R.color.transparent);
/*rtflv.getRefreshableView().setDivider(null);
rtflv.getRefreshableView().setBackgroundColor(
getResources().getColor(R.color.drugstore_bg_gray));
int pixof5dp = DisplayUtil.dip2px(this, 5);
rtflv.getRefreshableView().setPadding(0, pixof5dp, 0, pixof5dp);*/
}
class MyOnRefreshListener implements OnRefreshListener2<ListView> {
public MyOnRefreshListener(PullToRefreshListView ptflv) {
}
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
// ����ˢ��
refreshView.getLoadingLayoutProxy().setReleaseLabel("�ſ�ˢ������");
String label = DateUtils.formatDateTime(MemberScoreLog.this,
System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
new AsyncLoader_Refresh().execute();
// ˢ�����ݺ�״̬��ԭ
isCompleted = false;
refreshView.getLoadingLayoutProxy().setPullLabel("����ˢ��");
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
// ��������
// ������������
String createtime = "2099-01-01 11:56:43.157";
Map<String, String> bottomMap;
int count = adapter.getCount();
try {
if (count > 0) {
bottomMap = (Map<String, String>) adapter.getItem(count - 1);
createtime = bottomMap.get("CreateTime");
}
} catch (Exception e) {
// TODO �Զ����ɵ� catch ��
}
new AsynLoader_More().execute(createtime);
}
}
/**
* ˢ������
*/
private class AsyncLoader_Refresh extends
AsyncTask<String, Void, Integer> {
List<Map<String, String>> innerlist = null;
@Override
protected Integer doInBackground(String... params) {
try {
innerlist = coolbuy360.logic.Score.getLogs(User.getMemberID(),
pagesize, "");
if (innerlist != null) {
return (innerlist.size() > 0) ? LOADSUCCESS : LOADERROR;
} else {
return NETWORKNONE;// �������Ӵ���
}
} catch (TimestampException ex) {
return NETWORKTIMEOUT;
}
catch (Exception e) {
return NETWORKNONE;
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
// �������
protected void onPostExecute(Integer result) {
TextView async_error_txt = (TextView) async_error
.findViewById(R.id.async_error_txt);
Button async_error_refleshbtn = (Button) async_error
.findViewById(R.id.async_error_reflesh);
switch (result) {
case LOADSUCCESS:
adapter.clear();
adapter.addItems(innerlist);
adapter.notifyDataSetChanged();
refreshListView.getRefreshableView().requestFocusFromTouch();
refreshListView.getRefreshableView().setSelection(0);
//async_begin.setVisibility(View.GONE);
async_error.setVisibility(View.GONE);
LoadingView.setVisibility(View.GONE);
break;
case LOADERROR:
//async_begin.setVisibility(View.GONE);
async_error_txt.setText("��û�н���ֵ��¼��");
async_error_refleshbtn.setVisibility(View.GONE);
async_error.setVisibility(View.VISIBLE);
refreshListView.setEmptyView(listview_empty_error);
break;
case NETWORKNONE:
async_error.setVisibility(View.VISIBLE);
async_error_txt.setText(R.string.error_nonetwork);
async_error_refleshbtn.setVisibility(View.VISIBLE);
async_error_refleshbtn.setOnClickListener(new refreshOnclick());
ListViewEmptyError(R.string.error_nonetwork,new refreshOnclick());
break;
case NETWORKTIMEOUT:
async_error.setVisibility(View.VISIBLE);
async_error_txt.setText(R.string.error_timestamp);
async_error_refleshbtn.setVisibility(View.VISIBLE);
async_error_refleshbtn.setOnClickListener(new refreshOnclick());
ListViewEmptyError(R.string.error_timestamp,new refreshOnclick());
break;
default:
break;
}
refreshListView.onRefreshComplete();
}
}
public void ListViewEmptyError(int message,OnClickListener onclick) {
LoadingView.setVisibility(View.GONE);
refreshListView.setEmptyView(listview_empty_error);
TextView txtMessageView=(TextView)listview_empty_error.findViewById(R.id.listview_empty_message);
txtMessageView.setText(message);
Button btnRefreshViewButton=(Button)listview_empty_error.findViewById(R.id.listview_empty_refresh);
btnRefreshViewButton.setOnClickListener(onclick);
}
public class refreshOnclick implements OnClickListener
{
@Override
public void onClick(View v) {
// TODO �Զ����ɵķ������
async_error.setVisibility(View.GONE);
listview_empty_error.setVisibility(View.GONE);
LoadingView.setVisibility(View.VISIBLE);
//async_begin.setVisibility(View.VISIBLE);
new AsyncLoader_Refresh().execute();
}
}
/**
* �첽���ظ���
*/
private class AsynLoader_More extends AsyncTask<String, Void, Integer> {
List<Map<String, String>> innerlist = null;
@Override
protected Integer doInBackground(String... params) {
try {
String starttime = "2099-01-01 11:56:43.157";
if (params.length > 0) {
starttime = params[0];
}
innerlist = coolbuy360.logic.Score.getLogs(User.getMemberID(),
pagesize, starttime);
if (innerlist != null) {
return (innerlist.size() > 0) ? 0 : 1;
} else {
return 2;// �������Ӵ���
}
} catch (Exception e) {
return 2;
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
switch (result) {
case 0:
adapter.addItems(innerlist);
adapter.notifyDataSetChanged();
async_error.setVisibility(View.GONE);
break;
case 1:
Toast.makeText(MemberScoreLog.this, "û�и�������", Toast.LENGTH_SHORT)
.show();
break;
case 2:
Toast.makeText(MemberScoreLog.this, "�������ݳ���", Toast.LENGTH_SHORT)
.show();
break;
default:
break;
}
refreshListView.onRefreshComplete();
}
}
}