package com.weikou.beibeivideo.ui.category.fragment;
|
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.view.View;
|
import android.widget.ListView;
|
import android.widget.ProgressBar;
|
|
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.RetainViewFragment;
|
import com.umeng.analytics.MobclickAgent;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.ui.category.NewStarAdapter;
|
import com.weikou.beibeivideo.ui.category.bean.HotStar;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.widget.MySwipeRefreshLayout;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 明星fragment
|
*/
|
public class StarFragment extends RetainViewFragment {
|
private MySwipeRefreshLayout rl_starView;
|
private ListView starView;
|
private int starPage = 1;
|
private NewStarAdapter starAdapter;
|
private List<HotStar> hotStars = new ArrayList<HotStar>();
|
//判断网络请求是否成功,默认成功,避免二次执行请求
|
private boolean isSucceed = true;
|
|
/**
|
* 获取热门明星数据
|
*/
|
private void getHotStars() {
|
SharedPreferences preferences = starView.getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getHotStars(starView.getContext(), uid,
|
String.valueOf(starPage), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<HotStar> hotStarList = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<HotStar>>() {
|
}.getType());
|
if (starPage == 1) {
|
hotStars.clear();
|
}
|
// 数量小于服务器数量时 才增加分页和添加数据
|
if (hotStars.size() < jsonObject.getJSONObject(
|
"Data").getInt("count")) {
|
starPage++;
|
/**
|
* 特殊情况: 服务器上不要出现最后一个为一行的情况,否则会导致刷新异常。
|
* 具体表现形式就是:上拉加载后,数据已添加,界面刷新,但是此时上拉不会显示出
|
* 加载的新内容,而是继续保持上拉加载的状态,如果往上滑动一小段距离再滑回来
|
* 才能显示出新内容。
|
*/
|
if (hotStarList.size() % 3 == 1) {// 单独一个的情况处理
|
hotStarList.remove(hotStarList.size() - 1);//移除最后一个,添加其他的
|
hotStars.addAll(hotStarList);
|
} else {
|
hotStars.addAll(hotStarList);
|
}
|
starAdapter.notifyDataSetChanged();
|
}
|
isSucceed = true;
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
byte[] responseBytes, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseBytes, throwable);
|
isSucceed = false;
|
}
|
|
@Override
|
public void onFinish() {
|
rl_starView.setRefreshing(false);
|
rl_starView.setLoading(false);
|
}
|
});
|
}
|
|
@Override
|
public int getContentResource() {
|
return R.layout.category_star;
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
MobclickAgent.onPageStart("主界面—分类—明星");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
MobclickAgent.onPageEnd("主界面—分类—明星");
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
rl_starView = contentView.findViewById(R.id.rl_starView);
|
starView = (ListView) contentView.findViewById(R.id.star_ptrgv);
|
starAdapter = new NewStarAdapter(hotStars, getContext());
|
View view = new View(rl_starView.getContext());
|
starView.addHeaderView(view);
|
ProgressBar pb=new ProgressBar(rl_starView.getContext());
|
rl_starView.setFooter(pb);
|
starView.setAdapter(starAdapter);
|
rl_starView.setRefreshing(true);
|
rl_starView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
starPage = 1;
|
getHotStars();
|
}
|
});
|
|
rl_starView.setOnLoadListener(new MySwipeRefreshLayout.OnLoadListener() {
|
@Override
|
public void onLoad() {
|
getHotStars();
|
}
|
});
|
|
getHotStars();
|
}
|
|
/**
|
* 刷新明星页
|
*/
|
public void refreshHotStars() {
|
if (!isSucceed) {//没数据才刷新
|
getHotStars();
|
}
|
}
|
}
|