package com.luna.anytime;
import java.util.ArrayList;
import java.util.List;
import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVObject;
import com.avos.avoscloud.FindCallback;
import com.luna.anytime.adapter.AnytimeExpandableListAdapter;
import com.luna.anytime.data.DoingListData;
import android.support.v4.app.Fragment;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;
@SuppressLint("ValidFragment")
public class DoingListFragment extends Fragment {
ExpandableListView expandableListView;
TextView messageText;
AnytimeExpandableListAdapter adapter;
Activity activity;
// 列表数据
private ArrayList<DoingListData> mDoingListData;
public DoingListFragment(Activity _activity) {
activity = _activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_doing_list,
container, false);
mDoingListData = new ArrayList<DoingListData>();
expandableListView = (ExpandableListView) rootView
.findViewById(R.id.expandableListView_doing_list);
adapter = new AnytimeExpandableListAdapter(activity);
expandableListView.setAdapter(adapter);
expandableListView.setOnChildClickListener(listener);
messageText = (TextView) rootView
.findViewById(R.id.textView_loading_wait);
LoadingData();
return rootView;
}
private OnChildClickListener listener = new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Intent intentDoingListDetail = new Intent(activity,
DoingDetailActivity.class);
intentDoingListDetail.putExtra("childobj",
mDoingListData.get(groupPosition).doingListData
.get(childPosition).objectId);
intentDoingListDetail.putExtra(
"childtitle",
mDoingListData.get(groupPosition).doingListData.get(
childPosition).toString());
startActivity(intentDoingListDetail);
return true;
}
};
private void LoadingData() {
FindCallback<AVObject> findCallback = new FindCallback<AVObject>() {
@Override
public void done(List<AVObject> avObjects, AVException e) {
if (e == null) {
for (AVObject avo : avObjects) {
mDoingListData.add(new DoingListData(avo.getObjectId(),
avo.getString("GroupName")));
}
mHandler.obtainMessage(1).sendToTarget();
adapter.notifyDataSetChanged();
} else {
ERROR();
}
}
};
AVService.findDoingListGroup(findCallback);
}
private void ERROR() {
messageText.setText(getString(R.string.doing_list_error_loading));
expandableListView.setVisibility(View.INVISIBLE);
}
private void SetChildrenList(final String groupObjectId) {
FindCallback<AVObject> findCallback=new FindCallback<AVObject>() {
@Override
public void done(List<AVObject> avObjects, AVException e) {
if (e == null) {
ArrayList<DoingListData> childrenList = new ArrayList<DoingListData>();
for (AVObject avo : avObjects) {
childrenList.add(new DoingListData(avo.getObjectId(),
avo.getString("ChildName")));
}
for (DoingListData dld : mDoingListData) {
if (dld.objectId.equals(groupObjectId)) {
dld.doingListData = childrenList;
}
}
adapter.setGroups(mDoingListData);
expandableListView.setVisibility(View.VISIBLE);
messageText.setVisibility(View.INVISIBLE);
adapter.notifyDataSetChanged();
} else {
ERROR();
}
}
};
AVService.findChildrenList(groupObjectId, findCallback);
}
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if (1 == msg.what) {
for (DoingListData dld : mDoingListData) {
SetChildrenList(dld.objectId);
}
}
}
};
}