package com.weikou.beibeivideo.ui.recent;
|
|
import android.app.Dialog;
|
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.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.BeibeiVideoApplication;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.vo.WatchHistoryVO;
|
import com.weikou.beibeivideo.ui.dialog.LoadingDialogUtil;
|
import com.weikou.beibeivideo.util.UserUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.lang.reflect.Type;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Set;
|
|
public class WatchHistoryFragment extends Fragment {
|
|
private RefreshLayout srl;
|
|
private WatchHistoryAdapter mAdapter;
|
|
private DownloadAdapter2.IGetDeleteCallback getdeleteNumber = null;
|
|
private ListView list;
|
|
private View empty;
|
|
private List<WatchHistoryVO> voList = new ArrayList<>();
|
|
private int currentPage = 1;
|
|
private long count = 0;
|
|
private Dialog loadingDialog;
|
|
public void setDeleteCallback(
|
DownloadAdapter2.IGetDeleteCallback getdeleteNumber) {
|
this.getdeleteNumber = getdeleteNumber;
|
if (mAdapter != null)
|
mAdapter.setDeleteCallback(getdeleteNumber);
|
}
|
|
private void initView(View view) {
|
list = view.findViewById(R.id.list);
|
list.setDividerHeight(1);
|
mAdapter = new WatchHistoryAdapter(list.getContext(), voList);
|
if (getdeleteNumber != null)
|
mAdapter.setDeleteCallback(getdeleteNumber);
|
list.setAdapter(mAdapter);
|
|
srl = view.findViewById(R.id.srl_watch_history);
|
ProgressBar pb = new ProgressBar(getContext());
|
srl.setFooter(pb);
|
srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
currentPage = 1;
|
getWatchHistory(currentPage);
|
}
|
});
|
srl.setOnLoadListener(new RefreshLayout.OnLoadListener() {
|
@Override
|
public void onLoad() {
|
getWatchHistory(currentPage + 1);
|
}
|
});
|
srl.setRefreshing(true);
|
|
loadingDialog = LoadingDialogUtil.getLoadingDialog(getContext(), "");
|
getWatchHistory(currentPage);
|
}
|
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
Bundle savedInstanceState) {
|
View view = inflater.inflate(R.layout.watch_history_fragment, container,
|
false);
|
|
return view;
|
}
|
|
@Override
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
super.onViewCreated(view, savedInstanceState);
|
initView(view);
|
empty = view.findViewById(R.id.fl_empty);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
if (mAdapter != null)
|
mAdapter.setSelectedMode(false);
|
MobclickAgent.onPageStart("主页面——最近——观看记录");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
MobclickAgent.onPageEnd("主页面——最近——观看记录");
|
}
|
|
|
public void deleteWatchHistory() {
|
Set<String> selectedIds = mAdapter.getSelectedIds();
|
if (!selectedIds.isEmpty()) {
|
deleteWatchHistory(selectedIds);
|
} else {
|
Toast.makeText(list.getContext(), "请选择要删除的记录", Toast.LENGTH_LONG)
|
.show();
|
}
|
}
|
|
public boolean isSelectedMode() {
|
return mAdapter.isSelectedMode();
|
}
|
|
public void setSelectedMode(boolean selectedMode) {
|
mAdapter.setSelectedMode(selectedMode);
|
}
|
|
public void selectAll(boolean isSelected) {
|
mAdapter.selectAll(isSelected);
|
}
|
|
public int getCount() {
|
return mAdapter.getCount();
|
}
|
|
|
private void getWatchHistory(int page) {
|
BeibeiVideoAPI.getWatchHistory(BeibeiVideoApplication.application, UserUtil.getUid(BeibeiVideoApplication.application), page, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
JSONObject data = jsonObject.optJSONObject("Data");
|
count = data.optLong("count");
|
Type type = new TypeToken<List<WatchHistoryVO>>() {
|
}.getType();
|
|
List<WatchHistoryVO> list = gson.fromJson(data.optJSONArray("list").toString(), type);
|
currentPage = page;
|
if (page == 1)
|
voList.clear();
|
if (list != null && list.size() > 0) {
|
voList.addAll(list);
|
}
|
if (voList.size() > 0) {
|
empty.setVisibility(View.GONE);
|
} else {
|
empty.setVisibility(View.VISIBLE);
|
}
|
mAdapter.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
srl.setRefreshing(false);
|
srl.setLoading(false);
|
}
|
});
|
}
|
|
private void deleteWatchHistory(Set<String> ids) {
|
|
BeibeiVideoAPI.deleteWatchHistory(BeibeiVideoApplication.application, UserUtil.getUid(BeibeiVideoApplication.application), ids, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
if (loadingDialog != null && !loadingDialog.isShowing())
|
loadingDialog.show();
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
if (loadingDialog != null && loadingDialog.isShowing())
|
loadingDialog.dismiss();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
for (int i = 0; i < voList.size(); i++) {
|
if (ids.contains(voList.get(i).getId())) {
|
voList.remove(i--);
|
}
|
}
|
mAdapter.getSelectedIds().clear();
|
mAdapter.notifyDataSetChanged();
|
} else {
|
Toast.makeText(BeibeiVideoApplication.application, jsonObject.optString("Error"), Toast.LENGTH_SHORT).show();
|
}
|
|
}
|
});
|
|
}
|
|
}
|