package com.wuxiaolong.wewin.ui.myblog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.wuxiaolong.androidutils.library.LogUtil;
import com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView;
import com.wuxiaolong.wewin.retrofit.RetrofitCallback;
import com.wuxiaolong.wewin.ui.BaseFragment;
import com.wuxiaolong.wewin.ui.WebViewActivity;
import com.wuxiaolong.wewin.utils.AppConstants;
import com.xiaomolongstudio.wewin.R;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import okhttp3.ResponseBody;
import retrofit2.Call;
public class MyBlogFragment extends BaseFragment {
private DataAdapter dataAdapter;
@BindView(R.id.pullLoadMoreRecyclerView)
PullLoadMoreRecyclerView pullLoadMoreRecyclerView;
private int page = 1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my_blog, container, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
initView();
loadMyBlog();
}
private void initView() {
pullLoadMoreRecyclerView.setRefreshing(true);
pullLoadMoreRecyclerView.setLinearLayout();
dataAdapter = new DataAdapter();
pullLoadMoreRecyclerView.setAdapter(dataAdapter);
pullLoadMoreRecyclerView.setOnPullLoadMoreListener(new PullLoadMoreRecyclerView.PullLoadMoreListener() {
@Override
public void onRefresh() {
page = 1;
loadMyBlog();
}
@Override
public void onLoadMore() {
page++;
loadMyBlog();
}
});
}
private void loadMyBlog() {
Call<ResponseBody> call;
if (page == 1) {
call = apiStores.loadMyBlog();
} else {
call = apiStores.loadMyBlog(page);
}
call.enqueue(new RetrofitCallback<ResponseBody>() {
@Override
public void onSuccess(ResponseBody responseBody) {
try {
Document document = Jsoup.parse(new String(responseBody.bytes(), "UTF-8"));
List<Element> titleElementList = new ArrayList<>();
Elements titleElements = document.getElementsByClass("post-title-link");
for (Element element : titleElements) {
titleElementList.add(element);
//LogUtil.d("text=" + element.text());
//LogUtil.d("href=" + element.attr("href"));
}
List<Element> timeElementList = new ArrayList<>();
Elements timeElements = document.getElementsByClass("post-time");
for (Element element : timeElements) {
//LogUtil.d("time=" + element.getElementsByTag("time").text());
timeElementList.add(element);
}
//Elements categoryElements = document.getElementsByClass("post-category");
//for (Element element : categoryElements) {
// LogUtil.d("category=" + element.getElementsByTag("a").text());
//}
List<Element> bodyElementList = new ArrayList<>();
Elements bodyElements = document.getElementsByClass("post-body");
for (Element element : bodyElements) {
LogUtil.d("body=" + element.html());
bodyElementList.add(element);
}
if (page == 1) {
dataAdapter.clear();
}
dataAdapter.addAll(titleElementList, timeElementList, bodyElementList);
if (titleElementList.size() < 8) {
//因为我的博客一页8条数据,当小于8时,说明没有下一页了
pullLoadMoreRecyclerView.setHasMore(false);
} else {
pullLoadMoreRecyclerView.setHasMore(true);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int code, String msg) {
toastShow(msg);
}
@Override
public void onThrowable(Throwable t) {
toastShow(t.getMessage());
}
@Override
public void onFinish() {
pullLoadMoreRecyclerView.setPullLoadMoreCompleted();
}
});
addCalls(call);
}
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private List<Element> titleElementList = new ArrayList<>();
private List<Element> timeElementList = new ArrayList<>();
private List<Element> bodyElementList = new ArrayList<>();
public void addAll(List<Element> titleElementList, List<Element> timeElementList, List<Element> bodyElementList) {
this.titleElementList.addAll(titleElementList);
this.timeElementList.addAll(timeElementList);
this.bodyElementList.addAll(bodyElementList);
notifyDataSetChanged();
}
public void clear() {
this.titleElementList.clear();
this.timeElementList.clear();
this.bodyElementList.clear();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_blog_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Element titleElement = titleElementList.get(position);
holder.title.setText(titleElement.text());
Element timeElement = timeElementList.get(position);
holder.time.setText(timeElement.getElementsByTag("time").text());
Element bodyElement = bodyElementList.get(position);
holder.body.setText(Html.fromHtml(bodyElement.html()));
}
@Override
public int getItemCount() {
return titleElementList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.title)
TextView title;
@BindView(R.id.time)
TextView time;
@BindView(R.id.body)
TextView body;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Element titleElement = titleElementList.get(getLayoutPosition());
startActivity(new Intent(mActivity, WebViewActivity.class)
.putExtra(AppConstants.WEBVIEW_TITLE, titleElement.text())
.putExtra(AppConstants.WEBVIEW_URL, AppConstants.MY_Blog_URL + titleElement.attr("href")));
LogUtil.d("uuu=" + AppConstants.MY_Blog_URL + titleElement.attr("href"));
}
});
}
}
}
}