package com.yyquan.jzh.fragment.news;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
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.MainActivity;
import com.yyquan.jzh.activity.NewsContentActivity;
import com.yyquan.jzh.adapter.LoginPagerAdapter;
import com.yyquan.jzh.adapter.TitleListViewAdapter;
import com.yyquan.jzh.entity.CommonConstant;
import com.yyquan.jzh.entity.Ip;
import com.yyquan.jzh.entity.News_content;
import com.yyquan.jzh.entity.News_type;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import cz.msebera.android.httpclient.Header;
public class titleFragment extends Fragment implements View.OnClickListener, AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener, RefreshLayout.OnLoadListener {
private View view;
View footerLayout;
RefreshLayout mRefreshLayout;
ListView mlistview;
private TitleListViewAdapter adapter;
private ArrayList<News_content> list;
private News_type news;
private TextView tv_more;
private ProgressBar pb;
int index = 0;
int news_size;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view == null) {
view = inflater.inflate(R.layout.fragment_title, container, false);
mlistview = (ListView) view.findViewById(R.id.fragment_content_listview);
mRefreshLayout = (RefreshLayout) view.findViewById(R.id.fragment_content_swipe_container);
footerLayout = getActivity().getLayoutInflater().inflate(R.layout.list_item_more, null);
tv_more = (TextView) footerLayout.findViewById(R.id.text_more);
pb = (ProgressBar) footerLayout.findViewById(R.id.load_progress_bar);
tv_more.setOnClickListener(this);
mlistview.addFooterView(footerLayout);
mRefreshLayout.setOnRefreshListener(this);
mRefreshLayout.setOnLoadListener(this);
mlistview.setOnItemClickListener(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.black);
list = new ArrayList<>();
Bundle bd = getArguments();
if (bd != null) {
news = (News_type) bd.getSerializable(CommonConstant.TABPAGE_ENTITY);
getData(news);
}
}
return view;
}
/**
* 获取数据
*/
private void getData(News_type news) {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("type", news.getType_name());
params.put("limit", index);
params.put("action", "search_title");
client.post(Ip.ip + news.getType_url(), params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
String str = new String(responseBody);
// Toast.makeText(getActivity(), str, Toast.LENGTH_SHORT).show();
if (str != null) {
try {
JSONObject object = new JSONObject(str);
if (object.getString("code").equals("success")) {
JSONArray array = object.getJSONArray("data");
for (int i = 0; i < array.length(); i++) {
object = array.getJSONObject(i);
News_content content = new News_content();
content.setCpinglun(object.getString("pinglun"));
news_size = object.getInt("wenzhang");
object = object.getJSONObject("cdata");
content.setCid(object.getInt("cid"));
content.setCtitle(object.getString("ctitle"));
// content.setCzhaiyao(object.getString("czhaiyao"));
content.setCimage(object.getString("cimage"));
content.setCauthor(object.getString("cauthor"));
// content.setCcontent(object.getString("ccontent"));
content.setCtime(object.getString("ctime"));
list.add(content);
}
Message m = Message.obtain(h, 1);
h.sendMessage(m);
}
} catch (JSONException e) {
mRefreshLayout.setLoading(false);
mRefreshLayout.setRefreshing(false);
e.printStackTrace();
}
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Toast.makeText(getActivity(), "网络链接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
mRefreshLayout.setLoading(false);
mRefreshLayout.setRefreshing(false);
}
});
}
/**
* 业务逻辑处理
*/
private Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
if (index == 0) {
adapter = new TitleListViewAdapter(getActivity(), list);
mlistview.setAdapter(adapter);
mRefreshLayout.setRefreshing(false);
} else {
adapter.setList(list);
adapter.notifyDataSetChanged();
tv_more.setVisibility(View.VISIBLE);
pb.setVisibility(View.GONE);
mRefreshLayout.setLoading(false);
}
break;
}
}
};
/**
* 可见时调用
*
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && view != null) {
// getData(news);
} else {
}
}
/**
* 单例模式,获取数据并实例化
*
* @param news
* @return
*/
public static titleFragment newInstance(News_type news) {
Bundle bd = new Bundle();
bd.putSerializable(CommonConstant.TABPAGE_ENTITY, news);
titleFragment fragment = new titleFragment();
fragment.setArguments(bd);
return fragment;
}
/**
* 上拉加载方法
*/
@Override
public void onLoad() {
loadData();
}
/**
* 下拉刷新方法
*/
@Override
public void onRefresh() {
index = 0;
tv_more.setEnabled(true);
tv_more.setText("加载更多");
list = new ArrayList<News_content>();
getData(news);
tv_more.setVisibility(View.VISIBLE);
pb.setVisibility(View.GONE);
mRefreshLayout.setLoading(false);
}
/**
* 加载更多数据
*/
private void loadData() {
index += 10;
if (news_size == list.size()) {
tv_more.setText("数据已加载完毕");
tv_more.setEnabled(false);
return;
}
tv_more.setVisibility(View.GONE);
pb.setVisibility(View.VISIBLE);
getData(news);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position < list.size()) {
Intent intent = new Intent(getActivity(), NewsContentActivity.class);
intent.putExtra("news_content", list.get(position));
intent.putExtra("user", ((MainActivity) this.getActivity()).user);
intent.putExtra("url", news.getType_url());
startActivity(intent);
}
//Toast.makeText(getActivity(), position + "11", Toast.LENGTH_SHORT).show();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.text_more:
loadData();
break;
}
}
}