package com.devtf_l.app.fragments;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewStub;
import butterknife.InjectView;
import com.android.volley.Request;
import com.android.volley.Request.Method;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.devtf_l.app.R;
import com.devtf_l.app.activity.WebViewActivity;
import com.devtf_l.app.adapter.AndroidRecyclerAdapter;
import com.devtf_l.app.adapter.BaseRecyclerAdapter.OnItemClickListener;
import com.devtf_l.app.adapter.BaseRecyclerAdapter.OnItemLongClickListener;
import com.devtf_l.app.base.BaseTabFragment;
import com.devtf_l.app.entry.RssItem;
import com.devtf_l.app.entry.RssParseUtils;
import com.devtf_l.app.net.RSS2Request;
import com.devtf_l.app.net.WebAPI;
import com.devtf_l.app.util.Timber;
import com.github.johnpersano.supertoasts.SuperToast.Duration;
/**
* @Desc: android tab文章页
* @author ljh
* @date 2015-4-28 上午10:28:15
*/
public class AndroidFragment extends BaseTabFragment {
@InjectView(R.id.swipeRefreshLayout)
SwipeRefreshLayout mSwipeRefreshLayout;
@InjectView(R.id.recyclerView)
RecyclerView mRecyclerView;
@InjectView(R.id.errorViewStub)
ViewStub mErrorViewStub;
View errorView;
LinearLayoutManager linearLayoutManager;
AndroidRecyclerAdapter rvAdapter;
List<RssItem> rssList = new ArrayList<RssItem>();
@Override
public int getFragmentLayout() {
return R.layout.fragment_tab_android_layout;
}
@Override
public void init() {
linearLayoutManager = new LinearLayoutManager(context);
mRecyclerView.setLayoutManager(linearLayoutManager);
mRecyclerView.setHasFixedSize(true);
rvAdapter = new AndroidRecyclerAdapter(rssList);
mRecyclerView.setAdapter(rvAdapter);
rvAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Intent intent = new Intent(context, WebViewActivity.class);
intent.putExtra("url", rssList.get(position).getLink());
startActivity(intent);
}
});
rvAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(View view, int position) {
Timber.i("itemClick%s", position);
return true;
}
});
mSwipeRefreshLayout.setColorSchemeResources(ColorSchemeArr[0], ColorSchemeArr[1], ColorSchemeArr[2]);
mSwipeRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
getData();
}
});
}
@Override
public void onResume() {
super.onResume();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
getData();
}
}, 800);
}
@Override
public void getData() {
Request<?> request = new RSS2Request(Method.GET, WebAPI.RSS2_URL, new Listener<InputStream>() {
@Override
public void onResponse(final InputStream inputStream) {
try {
rssList = RssParseUtils.parseRss(inputStream);
} catch (Exception e) {
mHandler.post(new Runnable() {
public void run() {
context.showToast("获取数据失败");
}
});
}
context.runOnUiThread(new Runnable() {
public void run() {
rvAdapter.setItemList(rssList);
rvAdapter.notifyDataSetChanged();
mErrorViewStub.setVisibility(View.GONE);
mSwipeRefreshLayout.setRefreshing(false);
}
});
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (rssList.isEmpty())
if (null == errorView)
errorView = mErrorViewStub.inflate();
else
mErrorViewStub.setVisibility(View.VISIBLE);
mSwipeRefreshLayout.setRefreshing(false);
context.showToast("加载失败", Duration.VERY_SHORT);
}
});
request.setTag("android");
context.getRequestQueue().add(request);
}
@Override
public void initPageViewListener() {
}
@Override
public void onPause() {
super.onPause();
}
}