package com.keju.maomao.activity.my;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.keju.maomao.AsyncImageLoader;
import com.keju.maomao.AsyncImageLoader.ImageCallback;
import com.keju.maomao.Constants;
import com.keju.maomao.R;
import com.keju.maomao.SystemException;
import com.keju.maomao.activity.base.BaseActivity;
import com.keju.maomao.activity.event.EventDetailActivity;
import com.keju.maomao.bean.EventBean;
import com.keju.maomao.bean.ResponseBean;
import com.keju.maomao.helper.BusinessHelper;
import com.keju.maomao.util.NetUtil;
import com.keju.maomao.util.SharedPrefUtil;
/**
* 我的收藏的活动例表
*
* @author zhouyong
* @data 创建时间:2013-12-8 下午10:16:13
*/
public class CollectionOfEventListActivity extends BaseActivity implements OnClickListener {
private ImageButton ibLeft;
private Button btnRight;
private TextView tvTitle;
private ListView lvCollEventList;
private Adapter adapter;
private ArrayList<EventBean> list;
private View vFooter;
private ProgressBar pbFooter;
private TextView tvFooterMore;
private int pageIndex = 1;
private boolean isEdit = false;// 是不是点击编辑
// private int userId;
private boolean isLoadMore = false;
private boolean isLoad = false;// 是否正在加载数据
private boolean isComplete = false;// 是否加载完了;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.collection_event_list);
// userId = (int) getIntent().getExtras().getInt(Constants.EXTRA_DATA);
findView();
fillData();
}
private void findView() {
ibLeft = (ImageButton) this.findViewById(R.id.ibLeft);
btnRight = (Button) this.findViewById(R.id.btnRight);
tvTitle = (TextView) this.findViewById(R.id.tvTitle);
lvCollEventList = (ListView) findViewById(R.id.lvCollEventList);
// 加载更多footer
vFooter = getLayoutInflater().inflate(R.layout.footer, null);
pbFooter = (ProgressBar) vFooter.findViewById(R.id.progressBar);
tvFooterMore = (TextView) vFooter.findViewById(R.id.tvMore);
}
private void fillData() {
ibLeft.setOnClickListener(this);
ibLeft.setImageResource(R.drawable.ic_btn_left);
btnRight.setBackgroundResource(R.drawable.bg_btn_collection);
btnRight.setOnClickListener(this);
btnRight.setText("编辑");
tvTitle.setText("活动收藏");
list = new ArrayList<EventBean>();
adapter = new Adapter();
lvCollEventList.addFooterView(vFooter);
lvCollEventList.setAdapter(adapter);
lvCollEventList.setOnScrollListener(LoadListener);
lvCollEventList.setOnItemClickListener(itemListener);
lvCollEventList.setDivider(null);
lvCollEventList.setFooterDividersEnabled(false);
if (NetUtil.checkNet(this)) {
new GetCollEventListTask().execute();
} else {
showShortToast(R.string.NoSignalException);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ibLeft:
finish();
break;
case R.id.btnRight:
isEdit = !isEdit;
if (isEdit) {
btnRight.setText("完成");
} else {
btnRight.setText("编辑");
}
adapter.notifyDataSetChanged();
default:
break;
}
}
/**
* listview点击事件
*/
OnItemClickListener itemListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
if (arg2 >= list.size()) {
return;
}
EventBean bean = list.get(arg2);
// Bundle类用来携带数据
Bundle b = new Bundle();
b.putInt(Constants.EXTRA_DATA, bean.getEventId());
b.putString("BARNAME", bean.getBarName());
b.putBoolean("ISCOLLECT", bean.getIsCollect());
openActivity(EventDetailActivity.class, b);
}
};
/**
* 滚动监听器
*/
OnScrollListener LoadListener = new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 滚动到最后,默认加载下一页
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && isLoadMore) {
if (NetUtil.checkNet(CollectionOfEventListActivity.this)) {
if (!isLoad && !isComplete) {
new GetCollEventListTask().execute();
}
} else {
showShortToast(R.string.NoSignalException);
}
} else {
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem + visibleItemCount == totalItemCount) {
isLoadMore = true;
} else {
isLoadMore = false;
}
}
};
/***
* 活动收藏
*
*/
private class GetCollEventListTask extends AsyncTask<Void, Void, ResponseBean<EventBean>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
if (isLoadMore) {
isLoad = true;
pbFooter.setVisibility(View.VISIBLE);
tvFooterMore.setText(R.string.loading);
} else {
showPd(R.string.loading);
}
}
@Override
protected ResponseBean<EventBean> doInBackground(Void... params) {
int uid = SharedPrefUtil.getUid(CollectionOfEventListActivity.this);
try {
return new BusinessHelper().getcollectEvent(uid, pageIndex);
} catch (SystemException e) {
}
return null;
}
protected void onPostExecute(ResponseBean<EventBean> result) {
super.onPostExecute(result);
dismissPd();
pbFooter.setVisibility(View.GONE);
if (result.getStatus() != Constants.REQUEST_FAILD) {
List<EventBean> tempList = result.getObjList();
boolean isLastPage = false;
if (tempList.size() > 0) {
list.addAll(tempList);
// 通知ListView刷新界面
adapter.notifyDataSetChanged();
pageIndex++;
} else {
showShortToast("还没有收藏哦!");
isLastPage = true;
}
if (isLastPage) {
pbFooter.setVisibility(View.GONE);
tvFooterMore.setText(R.string.load_all);
isComplete = true;
} else {
if (tempList.size() > 0 && tempList.size() < Constants.PAGE_SIZE) {
pbFooter.setVisibility(View.GONE);
tvFooterMore.setText(R.string.load_all);
isComplete = true;
} else {
pbFooter.setVisibility(View.GONE);
tvFooterMore.setText("上拉查看更多");
}
}
if (pageIndex == 1 && tempList.size() == 0) {
tvFooterMore.setText("");
}
} else {
showShortToast(result.getError());
}
isLoad = false;
}
}
/**
* 删除活動收藏
*
* @author Zhouyong
*
*/
private class DelTask extends AsyncTask<Void, Void, JSONObject> {
private int position;
/**
* @param position
*/
public DelTask(int position) {
super();
this.position = position;
}
@Override
protected JSONObject doInBackground(Void... params) {
int uid = SharedPrefUtil.getUid(CollectionOfEventListActivity.this);
try {
return new BusinessHelper().collectEvent(list.get(position).getEventId(),uid);
} catch (SystemException e) {
return null;
}
}
@Override
protected void onPostExecute(JSONObject result) {
super.onPostExecute(result);
if (result != null) {
try {
int status = result.getInt("status");
if (status == Constants.REQUEST_SUCCESS) {
showShortToast("删除成功");
list.remove(position);
adapter.notifyDataSetChanged();
} else {
showShortToast(result.getString("message"));
}
} catch (JSONException e) {
showShortToast(R.string.json_exception);
}
} else {
showShortToast(R.string.connect_server_exception);
}
}
}
/**
* 收藏列表适配器
*
* */
public class Adapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int clickPosition = position;
ViewHolder holder = null;
EventBean bean = list.get(position);
if (convertView == null) {
holder = new ViewHolder();
convertView = getLayoutInflater().inflate(R.layout.collection_event_item, null);
holder.tvCollEventName = (TextView) convertView.findViewById(R.id.tvCollEventName);
holder.tvCollTime = (TextView) convertView.findViewById(R.id.tvCollTime);
holder.tvEventTime = (TextView)convertView.findViewById(R.id.tvEventTime);
holder.ivCollImage = (ImageView) convertView.findViewById(R.id.ivCollImage);
holder.ivDel = (ImageView) convertView.findViewById(R.id.ivDel);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvCollEventName.setText(bean.getEventTitle());
holder.tvCollTime.setText(bean.getCollectTime());
holder.tvEventTime.setText(bean.getStartTime());
String url = bean.getPhotoUrl();
holder.ivCollImage.setTag(url);
Drawable cacheDrawble = AsyncImageLoader.getInstance().loadDrawable(url, new ImageCallback() {
@Override
public void imageLoaded(Drawable imageDrawable, String imageUrl) {
ImageView image = (ImageView) lvCollEventList.findViewWithTag(imageUrl);
if (image != null) {
if (imageDrawable != null) {
image.setImageDrawable(imageDrawable);
} else {
image.setImageResource(R.drawable.ic_default);
}
}
}
});
if (cacheDrawble != null) {
holder.ivCollImage.setImageDrawable(cacheDrawble);
} else {
holder.ivCollImage.setImageResource(R.drawable.ic_default);
}
if (isEdit) {
holder.ivDel.setVisibility(View.VISIBLE);
} else {
holder.ivDel.setVisibility(View.GONE);
}
holder.ivDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder ab = new AlertDialog.Builder(CollectionOfEventListActivity.this);
ab.setTitle("提示");
ab.setMessage("确定删除该收藏吗?");
ab.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (NetUtil.checkNet(CollectionOfEventListActivity.this)) {
new DelTask(clickPosition).execute();
} else {
showShortToast(R.string.NoSignalException);
}
}
});
ab.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = ab.create();
alert.show();
}
});
return convertView;
}
}
class ViewHolder {
private TextView tvCollEventName, tvCollTime,tvEventTime;
private ImageView ivCollImage, ivDel;
}
}