package com.weikou.beibeivideo.ui.common;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.graphics.Color;
|
import android.os.Bundle;
|
import android.support.v4.app.Fragment;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.RecyclerView;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.ListView;
|
import android.widget.ProgressBar;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.lcjian.library.util.RefreshLayout;
|
import com.umeng.analytics.MobclickAgent;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.entity.VideoInfo;
|
import com.weikou.beibeivideo.entity.VideoType;
|
import com.weikou.beibeivideo.entity.video.VideoContent;
|
import com.weikou.beibeivideo.ui.video.VideoCloumn1Adapter;
|
import com.weikou.beibeivideo.ui.video.VideoColumn2Adapter;
|
import com.weikou.beibeivideo.util.DimenUtils;
|
import com.weikou.beibeivideo.util.UserUtil;
|
import com.weikou.beibeivideo.util.ui.DividerItemDecoration;
|
import com.weikou.beibeivideo.R;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class VideosFragment extends Fragment implements
|
OnClickListener {
|
|
private VideoColumn2Adapter adapter;
|
|
private SwipeRefreshLayout rl_category_video;
|
|
private RecyclerView rv_category_video;
|
|
private List<VideoInfo> mVideoInfos;
|
|
private String mHomeType;
|
|
private String mVideoType;
|
|
private String mStarId;
|
|
private int mCurrentPage = 1;
|
|
private VideoType type;
|
View view;
|
|
private ImageView iv_download_failure;
|
|
private boolean isLoad;
|
|
private View loading;
|
|
public static VideosFragment newInstance(VideoType type, String homeType, String videoType, String starId) {
|
VideosFragment fragment = new VideosFragment();
|
Bundle bundle = new Bundle();
|
bundle.putSerializable("videotype", type);
|
if (homeType != null)
|
bundle.putString("home_type", homeType);
|
if (videoType != null)
|
bundle.putString("video_type", videoType);
|
if (starId != null)
|
bundle.putString("star_id", starId);
|
|
fragment.setArguments(bundle);
|
return fragment;
|
}
|
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
MobclickAgent.onPageStart("分类详情页");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
MobclickAgent.onPageEnd("分类详情页");
|
}
|
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
view = inflater.inflate(R.layout.videos_activity, null);
|
rl_category_video = view.findViewById(R.id.rl_category_video);
|
rv_category_video = view.findViewById(R.id.rv_category_video);
|
rv_category_video.setLayoutManager(new LinearLayoutManager(getContext()));
|
DividerItemDecoration decoration = new DividerItemDecoration();
|
decoration.setSize(DimenUtils.dip2px(rv_category_video.getContext(), 6));
|
rv_category_video.addItemDecoration(decoration);
|
|
|
rv_category_video.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
@Override
|
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
super.onScrollStateChanged(recyclerView, newState);
|
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
|
int first = manager.findFirstVisibleItemPosition();
|
int last = manager.findLastVisibleItemPosition();
|
int total = manager.getItemCount();
|
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
if ((!isLoad) && last == total - 1 && mVideoInfos.size() < 1000) {
|
mCurrentPage++;
|
isLoad = true;
|
// tv_loading.setText("正在加载更多数据");
|
// iv_loading.setVisibility(View.VISIBLE);
|
loading.setVisibility(View.VISIBLE);
|
getVideoList();
|
}
|
}
|
}
|
|
@Override
|
public void onScrolled(RecyclerView recyclerView, int dx, final int dy) {
|
super.onScrolled(recyclerView, dx, dy);
|
}
|
});
|
|
|
rl_category_video.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
mCurrentPage = 1;
|
getVideoList();
|
}
|
});
|
iv_download_failure = view
|
.findViewById(R.id.iv_videosfragment_download_failure);
|
iv_download_failure.setOnClickListener(this);
|
view.findViewById(R.id.tv_more_new).setOnClickListener(this);
|
view.findViewById(R.id.tv_more_hot).setOnClickListener(this);
|
|
type = (VideoType) getArguments().getSerializable("videotype");
|
|
|
// if (getArguments() != null)
|
// getArguments().clear();
|
|
mHomeType = getArguments().getString("home_type");
|
try {
|
mVideoType = getArguments().getString("video_type");
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
mStarId = getArguments().getString("star_id");
|
|
mHomeType = (mHomeType == null ? "" : mHomeType);
|
mVideoType = (mVideoType == null ? "" : mVideoType);
|
mStarId = (mStarId == null ? "" : mStarId);
|
|
|
mVideoInfos = new ArrayList<>();
|
int columns = 2;
|
if (type != null && type.getCategoryType() != null && type.getCategoryType().contains("area")) {
|
columns = 3;
|
}
|
|
adapter = new VideoColumn2Adapter(getActivity(), getActivity().getApplicationContext(), mVideoInfos, false, columns, "list", null);
|
if (columns == 2)
|
adapter.initRecyclerViewDisplayWidthColumn2(rv_category_video);
|
else
|
adapter.initRecyclerViewDisplayWidthColumn3(rv_category_video);
|
loading = LayoutInflater.from(getContext()).inflate(R.layout.item_loading, null);
|
loading.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
loading.setVisibility(View.GONE);
|
adapter.setFooterView(loading);
|
rv_category_video.setAdapter(adapter);
|
rl_category_video.setRefreshing(true);
|
getVideoList();
|
return view;
|
}
|
|
private void getVideoList() {
|
String uid = UserUtil.getUid(rv_category_video.getContext());
|
if (type == null)
|
return;
|
BeibeiVideoAPI.getVideoList(rv_category_video.getContext(), uid, mStarId, mHomeType,
|
type.getId(), String.valueOf(mCurrentPage), category_two + "", type.getCategoryType(),
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
iv_download_failure.setVisibility(View.GONE);
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<VideoInfo> videoInfos = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<VideoInfo>>() {
|
}.getType());
|
|
if (mCurrentPage == 1) {
|
mVideoInfos.clear();
|
}
|
|
mVideoInfos.addAll(videoInfos);
|
adapter.setVideoList(mVideoInfos);
|
if (mVideoInfos.size() > 0)
|
adapter.notifyDataSetChanged();
|
// 需要添加广点通原生广告的时候执行以下条件语句,否则取消
|
// if (videoInfos != null && videoInfos.size() ==
|
// 30) {
|
// loadAD();
|
// }
|
if ((videoInfos == null || videoInfos.size() == 0)
|
&& mCurrentPage > 1) {
|
Toast.makeText(rv_category_video.getContext(), "没有更多了",
|
Toast.LENGTH_SHORT).show();
|
mCurrentPage--;
|
}
|
} else {
|
iv_download_failure.setVisibility(View.VISIBLE);
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString,
|
throwable);
|
iv_download_failure.setVisibility(View.VISIBLE);
|
}
|
|
@Override
|
public void onFinish() {
|
rl_category_video.setRefreshing(false);
|
isLoad = false;
|
loading.setVisibility(View.GONE);
|
}
|
});
|
}
|
|
int category_two = 1;
|
|
@Override
|
public void onClick(View v) {
|
TextView tv_new = view.findViewById(R.id.tv_more_new);
|
TextView tv_hot = view.findViewById(R.id.tv_more_hot);
|
|
switch (v.getId()) {
|
case R.id.iv_videosfragment_download_failure:
|
mCurrentPage = 1;
|
category_two = 1;
|
rl_category_video.setRefreshing(true);
|
view.findViewById(R.id.tv_more_new).setBackgroundResource(R.drawable.ic_select2);
|
view.findViewById(R.id.tv_more_hot).setBackgroundResource(R.drawable.ic_select1);
|
getVideoList();
|
break;
|
case R.id.tv_more_new:
|
mCurrentPage = 1;
|
rl_category_video.setRefreshing(true);
|
category_two = 1;
|
|
tv_new.setBackgroundResource(R.drawable.ic_select2);
|
tv_hot.setBackgroundResource(R.drawable.shape_video_detail_follow_btn);
|
|
tv_new.setTextColor(Color.parseColor("#3B3B3B"));
|
tv_hot.setTextColor(Color.parseColor("#efefef"));
|
|
getVideoList();
|
break;
|
case R.id.tv_more_hot:
|
mCurrentPage = 1;
|
category_two = 2;
|
rl_category_video.setRefreshing(true);
|
tv_new.setBackgroundResource(R.drawable.shape_video_detail_follow_btn);
|
tv_hot.setBackgroundResource(R.drawable.ic_select2);
|
tv_hot.setTextColor(Color.parseColor("#3B3B3B"));
|
tv_new.setTextColor(Color.parseColor("#efefef"));
|
getVideoList();
|
break;
|
|
default:
|
break;
|
}
|
}
|
}
|