package com.ysvideo.zhibo.app.ui;
|
|
import android.database.Cursor;
|
import android.database.sqlite.SQLiteDatabase;
|
import android.os.Bundle;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.Toast;
|
|
import com.google.gson.reflect.TypeToken;
|
import com.ysvideo.zhibo.app.R;
|
import com.ysvideo.zhibo.app.db.MySQLiteOpenHelper;
|
import com.ysvideo.zhibo.app.db.WatchHistoryTable;
|
import com.ysvideo.zhibo.app.entity.video.VideoInfo;
|
import com.ysvideo.zhibo.app.entity.video.WatchHistory;
|
import com.ysvideo.zhibo.app.ui.video.adapter.DownloadAdapter2;
|
import com.ysvideo.zhibo.app.ui.video.adapter.WatchHistoryAdapter;
|
import com.ysvideo.zhibo.app.util.JsonUtil;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import androidx.fragment.app.Fragment;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import me.jingbin.library.ByRecyclerView;
|
|
public class WatchHistoryFragment extends Fragment {
|
|
private WatchHistoryAdapter mAdapter;
|
|
private DownloadAdapter2.IGetDeleteCallback getdeleteNumber = null;
|
|
private ByRecyclerView mRecyclerView;
|
|
private View empty;
|
|
private List<WatchHistory> historyList = new ArrayList<>();
|
|
int page = 1;
|
|
public void setDeleteCallback(
|
DownloadAdapter2.IGetDeleteCallback getdeleteNumber) {
|
this.getdeleteNumber = getdeleteNumber;
|
if (mAdapter != null)
|
mAdapter.setDeleteCallback(getdeleteNumber);
|
}
|
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
Bundle savedInstanceState) {
|
return inflater.inflate(R.layout.fragment_watch_history, container,
|
false);
|
}
|
|
@Override
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
super.onViewCreated(view, savedInstanceState);
|
|
empty = view.findViewById(R.id.fl_empty);
|
empty.setVisibility(View.GONE);
|
|
mRecyclerView = view.findViewById(R.id.recyclerView);
|
mAdapter = new WatchHistoryAdapter(historyList, getContext());
|
if (getdeleteNumber != null)
|
mAdapter.setDeleteCallback(getdeleteNumber);
|
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
|
mRecyclerView.setAdapter(mAdapter);
|
mRecyclerView.setOnLoadMoreListener(new ByRecyclerView.OnLoadMoreListener() {
|
@Override
|
public void onLoadMore() {
|
page++;
|
List<WatchHistory> list = getWatchHistory(page, 20);
|
mRecyclerView.loadMoreComplete();
|
historyList.addAll(list);
|
mAdapter.notifyDataSetChanged();
|
}
|
});
|
|
mRecyclerView.setOnRefreshListener(new ByRecyclerView.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
page = 1;
|
requestData();
|
}
|
});
|
mRecyclerView.setRefreshing(true);
|
}
|
|
private void requestData() {
|
List<WatchHistory> list = getWatchHistory(page, 20);
|
mRecyclerView.setRefreshing(false);
|
if (page == 1) {
|
historyList.clear();
|
}
|
historyList.addAll(list);
|
if (historyList.size() == 0) {
|
empty.setVisibility(View.VISIBLE);
|
} else {
|
empty.setVisibility(View.GONE);
|
}
|
mAdapter.notifyDataSetChanged();
|
}
|
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
mAdapter.setSelectedMode(false);
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
|
public void deleteWatchHistory() {
|
List<Long> selectedIds = mAdapter.getSelectedIds();
|
if (!selectedIds.isEmpty()) {
|
for (int i = 0; i < selectedIds.size(); i++) {
|
getContext().getContentResolver().delete(
|
WatchHistoryTable.CONTENT_URI,
|
WatchHistoryTable._ID + " = ? ",
|
new String[]{String.valueOf(selectedIds.get(i))});
|
}
|
for (int i = 0; i < historyList.size(); i++) {
|
if (selectedIds.contains(historyList.get(i).getId())) {
|
historyList.remove(i--);
|
}
|
}
|
|
mAdapter.getSelectedIds().clear();
|
|
|
mAdapter.notifyDataSetChanged();
|
} else {
|
Toast.makeText(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.getItemCount();
|
}
|
|
|
private List<WatchHistory> getWatchHistory(int page, int pageSize) {
|
List<WatchHistory> videoInfoList = new ArrayList<>();
|
|
SQLiteDatabase database = new MySQLiteOpenHelper(getContext()).getReadableDatabase();
|
Cursor cursor = database.query(WatchHistoryTable.TABLE_NAME, new String[]{WatchHistoryTable._ID, WatchHistoryTable.VIDEO_ID, WatchHistoryTable.VIDEO_DETAIL_ID, WatchHistoryTable.VIDEO_DETAIL}, null, null, null, null, WatchHistoryTable.UPDATE_TIME + " DESC", (page - 1) * pageSize + "," + pageSize);
|
if (cursor.getCount() > 0) {
|
cursor.moveToFirst();
|
do {
|
WatchHistory watchHistory = new WatchHistory();
|
|
Long id = cursor.getLong(cursor
|
.getColumnIndex(WatchHistoryTable._ID));
|
String videoId = cursor.getString(cursor
|
.getColumnIndex(WatchHistoryTable.VIDEO_ID));
|
String videoDetailId = cursor.getString(cursor
|
.getColumnIndex(WatchHistoryTable.VIDEO_DETAIL_ID));
|
|
if (cursor
|
.getColumnIndex(WatchHistoryTable.UPDATE_TIME) > -1) {
|
String watchTime = cursor.getLong(cursor
|
.getColumnIndex(WatchHistoryTable.UPDATE_TIME)) + "";
|
watchHistory.setWatchTime(watchTime);
|
}
|
watchHistory.setVideoDetailId(videoDetailId);
|
watchHistory.setId(id);
|
watchHistory.setVideoId(videoId);
|
|
|
String videoInfoStr = cursor.getString(cursor
|
.getColumnIndexOrThrow(WatchHistoryTable.VIDEO_DETAIL));
|
VideoInfo videoInfo = JsonUtil.videoGson.fromJson(videoInfoStr, new TypeToken<VideoInfo>() {
|
}.getType());
|
watchHistory.setVideoInfo(videoInfo);
|
videoInfoList.add(watchHistory);
|
} while (cursor.moveToNext());
|
}
|
cursor.close();
|
return videoInfoList;
|
}
|
|
|
}
|