package com.app.fragment;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.Request.Method;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.JsonRequest;
import com.android.volley.toolbox.Volley;
import com.app.adapter.IndexListItemAdapter;
import com.app.function.ActivityUnit;
import com.app.function.Configuration;
import com.app.function.UserInfo;
import com.app.tools.CircularIndexImage;
import com.app.xlistview.XListView;
import com.app.xlistview.XListView.IXListViewListener;
import com.app.interFace.IndexListItemClickHelp;
import com.app.interFace.ThirdPartyLoginCallBack;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.ldxy.letsgoo.Detailpage;
import com.ldxy.letsgoo.PostPage;
import com.ldxy.letsgoo.R;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class FragmentIndex extends Fragment implements IXListViewListener,
IndexListItemClickHelp, ThirdPartyLoginCallBack {
private Intent intent;
private CircularIndexImage rimageview;
private TextView login;
private TextView recommend;
private TextView all;
private LinearLayout post;
private XListView mylistview;
private List<ActivityUnit> unitList;
private IndexListItemAdapter myadapter;
private Handler mhandler;
private RequestQueue mRequestQueue;
private int type = 0; // 列表类型,0为全部,1为推荐
private int index = 0; // 请求列表页 ,0为第一条,lastActivityId为上一条
private int lastActivityId = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_index, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();
initData();
}
@Override
public void onResume() {
super.onResume();
if (!UserInfo.isEmpty()) {
login.setVisibility(View.GONE);
rimageview.setVisibility(View.VISIBLE);
rimageview.setImageUrl(UserInfo.user.getPictureurl(), 1);
} else {
login.setVisibility(View.VISIBLE);
rimageview.setVisibility(View.GONE);
}
getData(1);
}
private void initView() {
intent = new Intent();
// SharedPreferences
// userinfo=getActivity().getSharedPreferences("user_info",0);
// String usericon=userinfo.getString("usericon", null);
// String username=userinfo.getString("username", null);
// String usergender=userinfo.getString("usergender", null);
// if(!Configuration.isEmpty(username)){
// isUser=true;
// }
login = (TextView) getView().findViewById(R.id.index_login);
rimageview = (CircularIndexImage) getView().findViewById(
R.id.index_userphoto);
recommend = (TextView) getView().findViewById(R.id.index_recommend);
all = (TextView) getView().findViewById(R.id.index_all);
post = (LinearLayout) getView().findViewById(R.id.index_post);
mylistview = (XListView) getActivity()
.findViewById(R.id.index_listview);
}
private void initData() {
mhandler = new Handler();
mRequestQueue = Volley.newRequestQueue(getActivity());
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Configuration
.showLoginWindow(getActivity(), FragmentIndex.this);
}
});
recommend.setOnClickListener(myclicklistener);
all.setOnClickListener(myclicklistener);
post.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (!UserInfo.isEmpty()) {
intent.setClass(getActivity(), PostPage.class);
startActivity(intent);
} else {
Configuration.showLoginWindow(getActivity(),
FragmentIndex.this);
}
}
});
unitList = new ArrayList<ActivityUnit>();
mylistview.setPullRefreshEnable(true);
mylistview.setPullLoadEnable(true);
myadapter = new IndexListItemAdapter(getActivity(), unitList, this);
mylistview.setAdapter(myadapter);
mylistview.setXListViewListener(this);
mylistview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view,
int position, long id) {
intent.putExtra("activityid", unitList.get(position - 1)
.getActivity_id());
intent.setClass(getActivity(), Detailpage.class);
startActivity(intent);
}
});
mylistview.startLoadMorePic();
}
private OnClickListener myclicklistener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.index_all:
all.setBackgroundResource(R.drawable.allafter);
recommend.setBackgroundResource(R.drawable.recommendbefore);
type = 0;
break;
case R.id.index_recommend:
all.setBackgroundResource(R.drawable.allbefore);
recommend.setBackgroundResource(R.drawable.recommentafter);
type = 1;
break;
}
index = 0;
mylistview.startLoadMorePic();
getData(1);
}
};
private void getData(final int method) { // type=1 重新生成list type=2 增长list
int userid = 0;
if (!UserInfo.isEmpty()) {
userid = UserInfo.user.getUser_id();
}
String url = Configuration.indexUrl + "?type=" + type + "&&index="
+ index + "&¤tuser_id=" + String.valueOf(userid);
JsonArrayRequest jar = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
List<ActivityUnit> list = JSON.parseArray(
response.toString(), ActivityUnit.class);
if (method == 1) {
unitList.clear();
}
for (int i = 0; i < list.size(); i++) {
unitList.add(list.get(i));
}
lastActivityId = unitList.get(unitList.size() - 1)
.getActivity_id();
myadapter.notifyDataSetChanged();
mylistview.stopLoadMorePic();
getActivity().findViewById(R.id.index_nulldata)
.setVisibility(View.GONE);
onLoad();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity().getApplicationContext(),
"活动获取失败", Toast.LENGTH_SHORT).show();
if (unitList.isEmpty()) {
getActivity().findViewById(R.id.index_nulldata)
.setVisibility(View.VISIBLE);
}
mylistview.stopLoadMorePic();
mylistview.stopRefresh();
mylistview.stopLoadMore();
}
});
mRequestQueue.add(jar);
}
private void onLoad() {
mylistview.stopRefresh();
mylistview.stopLoadMore();
}
@Override
public void onRefresh() {
mhandler.postDelayed(new Runnable() {
@Override
public void run() {
index = 0;
lastActivityId = 0;
getData(1);
}
}, 2000);
}
@Override
public void onLoadMore() {
mhandler.postDelayed(new Runnable() {
@Override
public void run() {
index = lastActivityId;
getData(2);
}
}, 2000);
}
@Override
public void onClick(final View item, View widget, final int position,
int which) {
if (!UserInfo.isEmpty()) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("user_id", UserInfo.user.getUser_id());
params.put("activity_id", unitList.get(position).getActivity_id());
JSONObject jsonobject = new JSONObject(params);
JsonRequest<JSONObject> jr = null;
if (item.findViewById(R.id.index_collect_before).getVisibility() == View.VISIBLE) {
jr = new JsonObjectRequest(Method.POST,
Configuration.collectUrl, jsonobject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Type type = new TypeToken<Map<String, String>>() {
}.getType();
Gson gson = new Gson();
Map<String, String> map = gson.fromJson(
response.toString(), type);
if (map.get("success").equals("1")) {
item.findViewById(R.id.index_collect_before)
.setVisibility(View.GONE);
item.findViewById(R.id.index_collect_after)
.setVisibility(View.VISIBLE);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
} else {
jr = new JsonObjectRequest(Method.POST,
Configuration.uncollectUrl, jsonobject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Type type = new TypeToken<Map<String, String>>() {
}.getType();
Gson gson = new Gson();
Map<String, String> map = gson.fromJson(
response.toString(), type);
if (map.get("success").equals("1")) {
item.findViewById(R.id.index_collect_before)
.setVisibility(View.VISIBLE);
item.findViewById(R.id.index_collect_after)
.setVisibility(View.GONE);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
}
mRequestQueue.add(jr);
} else {
Configuration.showLoginWindow(getActivity(), this);
}
}
@Override
public void donelogin() {
getActivity().recreate();
}
}