package cn.edu.njupt.allgo.fragment;
import java.util.ArrayList;
import com.haarman.listviewanimations.swinginadapters.prepared.SwingBottomInAnimationAdapter;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher;
import cn.edu.njupt.allgo.R;
import cn.edu.njupt.allgo.activity.EventPageACTIVITY;
import cn.edu.njupt.allgo.activity.HomeACTIVITY;
import cn.edu.njupt.allgo.activity.LoadEventACTIVITY;
import cn.edu.njupt.allgo.activity.UnreadACTIVITY;
import cn.edu.njupt.allgo.adapter.UnreadCardsAdapter;
import cn.edu.njupt.allgo.logic.RefreshInterFace;
import cn.edu.njupt.allgo.logic.UnreadLogic;
import cn.edu.njupt.allgo.logicImpl.UnreadLogicImpl;
import cn.edu.njupt.allgo.util.ArrayListUtil;
import cn.edu.njupt.allgo.vo.UnreadVo;
import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class UnreadFRAGMENT extends BaseFRAGMENT implements PullToRefreshAttacher.OnRefreshListener , RefreshInterFace{
private ListView listView;
private PullToRefreshAttacher mPullToRefreshAttacher;
private UnreadCardsAdapter UnreadcardsAdapter;
private ArrayList<UnreadVo> unreadDate = new ArrayList<UnreadVo>() ;
private SwingBottomInAnimationAdapter swingBottomInAnimationAdapter;
private UnreadLogic unreadLogic ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setFragmentFlag("UnreadFRAGMENT");
setHasOptionsMenu(true);
unreadLogic = new UnreadLogicImpl(getActivity() , UnreadFRAGMENT.this);
unreadLogic.initUnread();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_unread, null);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setView();
}
private void setView() {
listView = (ListView)getView().findViewById(R.id.listView_unread);
mPullToRefreshAttacher = ((UnreadACTIVITY)getActivity())
.getPullToRefreshAttacher();
mPullToRefreshAttacher.addRefreshableView(listView, this);
UnreadcardsAdapter = new UnreadCardsAdapter(getActivity(),unreadDate);
swingBottomInAnimationAdapter = new SwingBottomInAnimationAdapter(UnreadcardsAdapter);
swingBottomInAnimationAdapter.setInitialDelayMillis(300);
swingBottomInAnimationAdapter.setAbsListView(listView);
listView.setAdapter(swingBottomInAnimationAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO 点击方法
unreadLogic.setRead(UnreadcardsAdapter.getItem(arg2));
arg1.setBackgroundResource(R.color.transparent_yellow);
doAction(UnreadcardsAdapter.getItem(arg2));
}
});
}
//进入相应界面
private void doAction(UnreadVo unreadVo) {
switch(unreadVo.getAction()){
case 0: //进入活动主页
Intent intent = new Intent(getActivity(),LoadEventACTIVITY.class);
intent.putExtra("eid", unreadVo.getId());
startActivity(intent);
break;
case 1: //无操作
break;
case 2: //进入添加好友界面
break;
case 3: //进入聊天界面
break;
}
}
@Override
public void initActionBar() {
// TODO 初始化actionbar
getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
}
@Override
public void onRefreshStarted(View view) {
// TODO 下拉刷新的动作
unreadLogic.getUnread();
}
@SuppressWarnings("unchecked")
@Override
public void refresh(Object result, int kind) {
switch(kind){
case 1:
if(result != null){
unreadDate.clear();
unreadDate.addAll(0,(ArrayList<UnreadVo>)result);
ArrayListUtil.removeDuplicate(unreadDate);
ArrayListUtil.sortUnreadVo(unreadDate);
UnreadcardsAdapter.notifyDataSetChanged();
}
break;
case 2:
mPullToRefreshAttacher.setRefreshComplete();
unreadDate.addAll(0,(ArrayList<UnreadVo>)result);
ArrayListUtil.removeDuplicate(unreadDate);
ArrayListUtil.sortUnreadVo(unreadDate);
UnreadcardsAdapter.notifyDataSetChanged();
break;
case 3: //从数据库更新内容
unreadLogic.saveUnread(unreadDate);
unreadLogic.initUnread();
case -1:
//Toast.makeText(getActivity(),(String)result,Toast.LENGTH_SHORT).show();
if(mPullToRefreshAttacher.isRefreshing()){
mPullToRefreshAttacher.setRefreshComplete();
}
break;
}
}
@Override
public void saveData() {
unreadLogic.saveUnread(unreadDate);
}
}