package com.videogo.remoteplayback.list.querylist; import android.content.Context; import android.widget.ArrayAdapter; import com.videogo.openapi.bean.resp.CloudPartInfoFile; import com.videogo.remoteplayback.list.bean.ClickedListItem; import com.videogo.remoteplayback.list.bean.CloudPartInfoFileEx; import com.videogo.util.Utils; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; import java.util.List; import ezviz.ezopensdk.R; public class StandardArrayAdapter extends ArrayAdapter { private ArrayAdapterChangeListener adapterChangeListener; final List items; private List cloudFileExAll = new ArrayList(); private List localFileExAll = null; private Context context; public StandardArrayAdapter(final Context context, final int textViewResourceId, final List items) { super(context, textViewResourceId, items); this.items = items; this.cloudFileExAll.addAll(items); this.context = context; } public List getCloudFileEx() { return cloudFileExAll; } public void removeCloudFileBySelected(HashMap selectedCloudFiles) { if (cloudFileExAll == null) { return; } Iterator it = cloudFileExAll.iterator(); List cloudInfoFiles = new ArrayList(); boolean isMore = false; while (it.hasNext()) { CloudPartInfoFileEx infoFileEx = it.next(); if (infoFileEx.getDataThree() != null) { if (selectedCloudFiles.containsKey(infoFileEx.getDataThree().getFileId())) { infoFileEx.setDataThree(null); } } if (infoFileEx.getDataTwo() != null) { if (selectedCloudFiles.containsKey(infoFileEx.getDataTwo().getFileId())) { infoFileEx.setDataTwo(null); } } if (infoFileEx.getDataOne() != null) { if (selectedCloudFiles.containsKey(infoFileEx.getDataOne().getFileId())) { infoFileEx.setDataOne(null); } } if (infoFileEx.getDataOne() != null) { cloudInfoFiles.add(infoFileEx.getDataOne()); } if (infoFileEx.getDataTwo() != null) { cloudInfoFiles.add(infoFileEx.getDataTwo()); } if (infoFileEx.getDataThree() != null) { cloudInfoFiles.add(infoFileEx.getDataThree()); } if (infoFileEx.isMore()) { isMore = true; } } sortCloudFiles(cloudInfoFiles, isMore); this.items.clear(); if (cloudFileExAll.size() == 0) { adapterChangeListener.onDeleteCloudFileCompleteListener(false); } else if (cloudFileExAll.size() == 1 && cloudFileExAll.get(0).isMore()) { cloudFileExAll.clear(); adapterChangeListener.onDeleteCloudFileCompleteListener(true); } else { this.items.addAll(cloudFileExAll); } } private void sortCloudFiles(List cloudInfoFiles, boolean isMore) { cloudFileExAll.clear(); int length = cloudInfoFiles.size(); int i = 0; while (i < length) { CloudPartInfoFileEx cloudPartInfoFileEx = new CloudPartInfoFileEx(); CloudPartInfoFile dataOne = cloudInfoFiles.get(i); dataOne.setPosition(i); Calendar beginCalender = Utils.convert14Calender(dataOne.getStartTime()); String hour = getHour(beginCalender.get(Calendar.HOUR_OF_DAY)); cloudPartInfoFileEx.setHeadHour(hour); cloudPartInfoFileEx.setDataOne(dataOne); i++; if (i > length - 1) { cloudFileExAll.add(cloudPartInfoFileEx); continue; } CloudPartInfoFile dataTwo = cloudInfoFiles.get(i); if (hour.equals(getHour(Utils.convert14Calender(dataTwo.getStartTime()).get(Calendar.HOUR_OF_DAY)))) { dataTwo.setPosition(i); cloudPartInfoFileEx.setDataTwo(dataTwo); i++; if (i > length - 1) { cloudFileExAll.add(cloudPartInfoFileEx); continue; } CloudPartInfoFile dataThree = cloudInfoFiles.get(i); if (hour.equals(getHour(Utils.convert14Calender(dataThree.getStartTime()).get(Calendar.HOUR_OF_DAY)))) { dataThree.setPosition(i); cloudPartInfoFileEx.setDataThree(dataThree); i++; } } cloudFileExAll.add(cloudPartInfoFileEx); } if (isMore) { CloudPartInfoFileEx partInfoFileEx = new CloudPartInfoFileEx(); partInfoFileEx.setMore(true); cloudFileExAll.add(partInfoFileEx); } } private String getHour(int hourOfDay) { // if (hourOfDay < 10) { // return " " + hourOfDay + MINUTE; // } else { return hourOfDay + getContext().getString(R.string.play_hour); // } } public List getLocalFileEx() { return localFileExAll; } public void addLocalFileExAll(List localFileExAll) { this.localFileExAll = localFileExAll; items.addAll(localFileExAll); this.notifyDataSetChanged(); } public void addLocalFileExAll() { if (localFileExAll != null) { items.addAll(localFileExAll); this.notifyDataSetChanged(); } } public void minusLocalFileExAll() { items.clear(); items.addAll(cloudFileExAll); this.notifyDataSetChanged(); } public Context getContext() { return context; } public CloudPartInfoFile getNextFile(ClickedListItem playClickItem) { CloudPartInfoFile partInfoFile = null; List cloudList = new ArrayList(); for (CloudPartInfoFileEx infoFile : cloudFileExAll) { if (infoFile.getDataOne() != null) { cloudList.add(infoFile.getDataOne()); } if (infoFile.getDataTwo() != null) { cloudList.add(infoFile.getDataTwo()); } if (infoFile.getDataThree() != null) { cloudList.add(infoFile.getDataThree()); } } if (localFileExAll != null) { for (CloudPartInfoFileEx infoFile : localFileExAll) { if (infoFile.getDataOne() != null) { cloudList.add(infoFile.getDataOne()); } if (infoFile.getDataTwo() != null) { cloudList.add(infoFile.getDataTwo()); } if (infoFile.getDataThree() != null) { cloudList.add(infoFile.getDataThree()); } } } if (playClickItem.getIndex() < cloudList.size() - 1) { partInfoFile = cloudList.get(playClickItem.getIndex() + 1); } return partInfoFile; } public SelectFileInfo getNextFile(int position) { CloudPartInfoFile selectedInfoFile = null; boolean isSelected = false; int selPosition = 0; for (CloudPartInfoFileEx infoFile : items) { if (infoFile.getDataOne() != null) { if (isSelected) { selectedInfoFile = infoFile.getDataOne(); break; } else { if (infoFile.getDataOne().getPosition() == position) { isSelected = true; } } } if (infoFile.getDataTwo() != null) { if (isSelected) { selectedInfoFile = infoFile.getDataTwo(); break; } else { if (infoFile.getDataTwo().getPosition() == position) { isSelected = true; } } } if (infoFile.getDataThree() != null) { if (isSelected) { selectedInfoFile = infoFile.getDataThree(); break; } else { if (infoFile.getDataThree().getPosition() == position) { isSelected = true; } } } selPosition++; } return new SelectFileInfo(selectedInfoFile, selPosition); } public void clearData() { if (items != null) { items.clear(); } cloudFileExAll.clear(); if (localFileExAll != null) { localFileExAll.clear(); } } public class SelectFileInfo { private CloudPartInfoFile selectedInfoFile; private int selPosition; public SelectFileInfo(CloudPartInfoFile selectedInfoFile, int selPosition) { this.selectedInfoFile = selectedInfoFile; this.selPosition = selPosition; } public CloudPartInfoFile getSelectedInfoFile() { return selectedInfoFile; } public void setSelectedInfoFile(CloudPartInfoFile selectedInfoFile) { this.selectedInfoFile = selectedInfoFile; } public int getSelPosition() { return selPosition; } public void setSelPosition(int selPosition) { this.selPosition = selPosition; } } public void setAdapterChangeListener(ArrayAdapterChangeListener adapterChangeListener) { this.adapterChangeListener = adapterChangeListener; } public interface ArrayAdapterChangeListener { void onDeleteCloudFileCompleteListener(boolean isLocal); } }