package com.yyquan.jzh.fragment.news; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; 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.NewsContentActivity; import com.yyquan.jzh.adapter.PingLunListViewAdapter; import com.yyquan.jzh.entity.Ip; import com.yyquan.jzh.entity.News_content; import com.yyquan.jzh.entity.News_pinglun; import com.yyquan.jzh.entity.User; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import cz.msebera.android.httpclient.Header; /** * Created by jzh on 2015/9/28. */ public class pinglunFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener, RefreshLayout.OnLoadListener, View.OnClickListener { private View view; private TextView tv_title; private TextView tv_author; private TextView tv_time; private TextView tv_total; private Intent intent; private News_content content; private User user; private ListView listview; private RefreshLayout mRefreshLayout; ArrayList<News_pinglun> list; PingLunListViewAdapter adapter; View footerLayout; private TextView tv_more; private ProgressBar pb; private String search_url = Ip.ip + "/YfriendService/DoGetPingLun"; int pinglun_size; int index = 0; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (view == null) { list = new ArrayList<>(); view = inflater.inflate(R.layout.fragment_pinglun, container, false); footerLayout = getActivity().getLayoutInflater().inflate(R.layout.list_item_more, null); tv_more = (TextView) footerLayout.findViewById(R.id.text_more); tv_more.setOnClickListener(this); pb = (ProgressBar) footerLayout.findViewById(R.id.load_progress_bar); intent = getActivity().getIntent(); content = (News_content) intent.getSerializableExtra("news_content"); tv_title = (TextView) view.findViewById(R.id.news_content_textView_title); tv_author = (TextView) view.findViewById(R.id.news_content_textView_author); tv_time = (TextView) view.findViewById(R.id.news_content_textView_time); tv_total = (TextView) view.findViewById(R.id.news_content_textView_total); listview = (ListView) view.findViewById(R.id.news_content_listView); listview.addFooterView(footerLayout); mRefreshLayout = (RefreshLayout) view.findViewById(R.id.fragment_content_swipe_container); mRefreshLayout.setOnRefreshListener(this); mRefreshLayout.setOnLoadListener(this); mRefreshLayout.setChildView(listview); mRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_dark, android.R.color.holo_red_light, android.R.color.black); tv_title.setText(content.getCtitle()); tv_author.setText(content.getCauthor()); tv_time.setText(content.getCtime()); user = ((NewsContentActivity) getActivity()).user; getData(content.getCid(), 0); } return view; } /** * 根据文章id获取评论 * * @param pcid */ public void getData(int pcid, int limit) { AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.put("pcid", pcid); params.put("user", user.getUser()); params.put("limit", limit); // params.put("cid", content.getCid()); params.put("action", "search"); client.post(search_url, params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { { String str = new String(responseBody); 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_pinglun pinglun = new News_pinglun(); User users = new User(); users.setNickname(object.getString("nickname")); users.setSex(object.getString("sex")); users.setIcon(object.getString("icon")); pinglun.setIspzan(object.getString("ispzan")); JSONObject ob = object.getJSONObject("pdata"); pinglun_size = object.getInt("size"); pinglun.setPcid(ob.getInt("pcid")); pinglun.setPid(ob.getInt("pid")); pinglun.setPcontent(ob.getString("pcontent")); pinglun.setPlocation(ob.getString("plocation")); pinglun.setPtime(ob.getString("ptime")); pinglun.setPzan(ob.getString("pzan")); users.setUser(ob.getString("user")); pinglun.setUser(users); list.add(pinglun); } if (((NewsContentActivity) getActivity()) == null) { return; } else { ((NewsContentActivity) getActivity()).tv_pinglun.setText(pinglun_size + "评"); } tv_total.setText("热门评论(" + pinglun_size + ")"); ((NewsContentActivity) getActivity()).pl_size = pinglun_size; if (index == 0) { adapter = new PingLunListViewAdapter(getActivity(), list, user.getUser()); listview.setAdapter(adapter); listview.setVisibility(View.VISIBLE); } else { adapter.setList(list); adapter.notifyDataSetChanged(); tv_more.setVisibility(View.VISIBLE); pb.setVisibility(View.GONE); } } else { tv_total.setText("暂无评论"); listview.setVisibility(View.GONE); } mRefreshLayout.setRefreshing(false); mRefreshLayout.setLoading(false); } catch (JSONException e) { mRefreshLayout.setRefreshing(false); mRefreshLayout.setLoading(false); e.printStackTrace(); } } else { mRefreshLayout.setLoading(false); mRefreshLayout.setRefreshing(false); } } } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { mRefreshLayout.setRefreshing(false); mRefreshLayout.setLoading(false); } }); } @Override public void onLoad() { loadData(); } @Override public void onRefresh() { refreshData(); } /** * 刷新数据 */ public void refreshData() { index = 0; tv_more.setEnabled(true); tv_more.setText("加载更多"); list = new ArrayList<>(); getData(content.getCid(), 0); tv_more.setVisibility(View.VISIBLE); pb.setVisibility(View.GONE); mRefreshLayout.setLoading(false); } /** * 加载更多数据 */ private void loadData() { index += 10; if (pinglun_size == list.size()) { tv_more.setText("数据已加载完毕"); tv_more.setEnabled(false); return; } tv_more.setVisibility(View.GONE); pb.setVisibility(View.VISIBLE); getData(content.getCid(), index); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.text_more: loadData(); break; } } }