package com.yyquan.jzh.fragment.user;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
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.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.demievil.library.RefreshLayout;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.yyquan.jzh.R;
import com.yyquan.jzh.activity.LuntanToStateActivity;
import com.yyquan.jzh.activity.ShowLuntanActivity;
import com.yyquan.jzh.adapter.LuntanListViewAdapter;
import com.yyquan.jzh.entity.Ip;
import com.yyquan.jzh.entity.News_luntan;
import com.yyquan.jzh.entity.User;
import com.yyquan.jzh.util.ToastUtil;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import butterknife.Bind;
import butterknife.ButterKnife;
import cz.msebera.android.httpclient.Header;
/**
* Created by Administrator on 2016/2/4.
*/
public class UserStatusFragment extends Fragment implements View.OnClickListener, AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener, RefreshLayout.OnLoadListener {
View view;
User user;
@Bind(R.id.fragment_luntan_listview)
ListView mlistview;
@Bind(R.id.fragment_luntan_freshLayout)
RefreshLayout mRefreshLayout;
@Bind(R.id.tv)
TextView tv;
private TextView tv_more;
private ProgressBar pb;
int index = 0;
int news_size;
View footerLayout;
private ArrayList<News_luntan> mlist;
LuntanListViewAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view == null) {
view = inflater.inflate(R.layout.fragment_user_status, container, false);
initialView();
getUserMessage(0);
}
return view;
}
/**
* 初始化控件
*/
void initialView() {
ButterKnife.bind(this, view);
Bundle bd = getArguments();
if (bd != null) {
user = (User) bd.getSerializable("user");
}
footerLayout = getActivity().getLayoutInflater().inflate(R.layout.luntan_list_item_more, null);
mlistview = (ListView) view.findViewById(R.id.fragment_luntan_listview);
mRefreshLayout = (RefreshLayout) view.findViewById(R.id.fragment_luntan_freshLayout);
tv_more = (TextView) footerLayout.findViewById(R.id.text_more);
pb = (ProgressBar) footerLayout.findViewById(R.id.load_progress_bar);
tv_more.setOnClickListener(this);
mlistview.setOnItemClickListener(this);
mlistview.addFooterView(footerLayout);
mRefreshLayout.setOnRefreshListener(this);
mRefreshLayout.setOnLoadListener(this);
mRefreshLayout.setChildView(mlistview);
mRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
android.R.color.holo_green_dark,
android.R.color.holo_red_light,
android.R.color.holo_orange_dark);
}
/**
* 获取用户资料
*/
void getUserMessage(int limit) {
if (limit == 0) {
mlist = new ArrayList<>();
}
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("user", user.getUser());
params.put("action", "search_user");
params.put("limit", limit);
client.post(Ip.ip_user_status, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
mRefreshLayout.setLoading(false);
mRefreshLayout.setRefreshing(false);
try {
String str = new String(responseBody);
if (str != null) {
JSONObject object = new JSONObject(str);
if (object.getString("code").equals("success")) {
mRefreshLayout.setVisibility(View.VISIBLE);
tv.setVisibility(View.GONE);
JSONArray array = object.getJSONArray("data");
for (int i = 0; i < array.length(); i++) {
object = array.getJSONObject(i);
News_luntan news = new News_luntan();
User u = new User();
u.setNickname(object.getString("nickname"));
u.setSex(object.getString("sex"));
u.setIcon(object.getString("icon"));
u.setUser(object.getString("user"));
news.setLid(object.getInt("lid"));
news.setUser(u);
news.setTime(object.getString("time"));
news.setContent(object.getString("content"));
news.setImage(object.getString("image"));
news.setLocation(object.getString("location"));
news.setPinglun(object.getString("pinglun_size"));
news_size = object.getInt("state_size");
mlist.add(news);
}
if (index == 0) {
adapter = new LuntanListViewAdapter(getActivity(), mlist);
mlistview.setAdapter(adapter);
} else {
adapter.setList(mlist);
adapter.notifyDataSetChanged();
tv_more.setVisibility(View.VISIBLE);
pb.setVisibility(View.GONE);
}
} else {
mRefreshLayout.setVisibility(View.GONE);
tv.setVisibility(View.VISIBLE);
}
} else {
Toast.makeText(getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
mRefreshLayout.setLoading(false);
mRefreshLayout.setRefreshing(false);
Toast.makeText(getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.text_more:
loadData();
break;
}
}
private void loadData() {
index += 10;
if (news_size == mlist.size()) {
tv_more.setText("数据已加载完毕");
tv_more.setEnabled(false);
return;
}
tv_more.setVisibility(View.GONE);
pb.setVisibility(View.VISIBLE);
getUserMessage(index);
}
@Override
public void onLoad() {
loadData();
}
@Override
public void onRefresh() {
index = 0;
tv_more.setEnabled(true);
tv_more.setText("加载更多");
tv_more.setVisibility(View.VISIBLE);
pb.setVisibility(View.GONE);
mRefreshLayout.setLoading(false);
getUserMessage(index);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (ShowLuntanActivity.instance != null) {
getActivity().finish();
}
Intent intent = new Intent(getActivity(), ShowLuntanActivity.class);
intent.putExtra("news_luntan", mlist.get(position));
startActivity(intent);
}
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
if (view != null) {
ViewGroup vg = (ViewGroup) view.getParent();
vg.removeView(view);
}
}
}