package com.diandi.demo.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.diandi.demo.CustomApplication;
import com.diandi.demo.R;
import com.diandi.demo.adapter.FeedAdapter;
import com.diandi.demo.adapter.base.BaseListAdapter;
import com.diandi.demo.db.DatabaseUtilC;
import com.diandi.demo.config.Constant;
import com.diandi.demo.model.User;
import com.diandi.demo.model.diandi.DianDi;
import com.diandi.demo.sync.UserHelper;
import com.diandi.demo.util.L;
import com.diandi.demo.widget.xlist.XListView;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.datatype.BmobDate;
import cn.bmob.v3.datatype.BmobPointer;
import cn.bmob.v3.listener.FindListener;
/**
* *******************************************************************************
* ********* Author : klob(kloblic@gmail.com) .
* ********* Date : 2014-11-29 .
* ********* Time : 11:46 .
* ********* Project name : Diandi1.18 .
* ********* Version : 1.0
* ********* Copyright @ 2014, klob, All Rights Reserved
* *******************************************************************************
*/
public class FavoriteActivity extends BaseActivity implements XListView.IXListViewListener, AdapterView.OnItemClickListener {
private final String FAVORITE = "favorite_";
private TextView networkTips;
private XListView mListView;
private ArrayList<DianDi> mListItems;
private BaseListAdapter<DianDi> mAdapter;
private int pageNum;
private ProgressBar progressbar;
private User mUser;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
findView();
initView();
loadData();
}
public void onResume() {
super.onResume();
onRefresh();
}
public void onDestroy() {
super.onDestroy();
if (mListItems != null) {
CustomApplication.getInstance().getCache().put(FAVORITE + mUser.getObjectId(), mListItems);
}
}
@Override
void findView() {
setContentView(R.layout.activity_favorite);
mListView = (XListView) findViewById(R.id.fragment_diandi_listview);
networkTips = (TextView) findViewById(R.id.activity_favorite_networkTips);
progressbar = (ProgressBar) findViewById(R.id.progressBar);
}
@Override
void initView() {
pageNum = 0;
mUser = BmobUser.getCurrentUser(mContext, User.class);
initTopBarForLeft("收藏");
mListItems = new ArrayList<DianDi>();
if (CustomApplication.getInstance().getCache().getAsObject(FAVORITE + mUser.getObjectId()) != null) {
mListItems = (ArrayList<DianDi>) CustomApplication.getInstance().getCache().getAsObject(FAVORITE + mUser.getObjectId());
}
initXListView();
bindEvent();
}
private void initXListView() {
mListView.setOnItemClickListener(this);
mListView.setPullLoadEnable(false);
mListView.setPullRefreshEnable(true);
mListView.setXListViewListener(this);
mListView.pullRefreshing();
mAdapter = new FeedAdapter(this, mListItems);
mListView.setAdapter(mAdapter);
}
@Override
void bindEvent() {
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Intent intent = new Intent();
intent.setClass(this, CommentActivity.class);
intent.putExtra("data", mListItems.get(position - 1));
startAnimActivity(intent);
}
public void loadData() {
// progressbar.setVisibility(View.VISIBLE);
BmobQuery<DianDi> query = new BmobQuery<DianDi>();
query.addWhereRelatedTo("favorite", new BmobPointer(mUser));
query.order("-createdAt");
query.setLimit(Constant.NUMBERS_PER_PAGE);
BmobDate date = new BmobDate(new Date(System.currentTimeMillis()));
query.addWhereLessThan("createdAt", date);
query.setSkip(Constant.NUMBERS_PER_PAGE * (pageNum++));
query.include("author");
query.findObjects(FavoriteActivity.this, new FindListener<DianDi>() {
@Override
public void onSuccess(List<DianDi> list) {
if (list.size() != 0 && list.get(list.size() - 1) != null) {
{
mListItems.clear();
}
if (list.size() < Constant.NUMBERS_PER_PAGE) {
ShowToast("已加载完所有数据~");
}
if (UserHelper.getCurrentUser() != null) {
list = DatabaseUtilC.getInstance(mContext).setFav(list);
}
mListItems.addAll(list);
mAdapter.notifyDataSetChanged();
} else {
ShowToast("暂无更多数据~");
if (list.size() == 0 && mListItems.size() == 0) {
networkTips.setText("暂无收藏。快去首页收藏几个把~");
pageNum--;
Log.i(TAG, "SIZE:" + list.size() + "ssssize" + mListItems.size());
return;
}
pageNum--;
}
refreshPull();
}
@Override
public void onError(int arg0, String arg1) {
// TODO Auto-generated method stub
L.i(TAG, "find failed." + arg1);
pageNum--;
refreshPull();
}
});
}
@Override
public void onRefresh() {
pageNum = 0;
loadData();
}
@Override
public void onLoadMore() {
loadData();
}
private void refreshPull() {
if (mListView.getPullRefreshing()) {
mListView.stopRefresh();
networkTips.setVisibility(View.INVISIBLE);
}
//progressbar.setVisibility(View.GONE);
networkTips.setVisibility(View.GONE);
}
private String getCurrentTime() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatter.format(new Date(System.currentTimeMillis()));
}
}