- 修复更换配置引起指定搜索源bug修复 (by okjack)

- 修复选择首页数据源滚动到指定位置 (by okjack)
pull/62/head
okjackcaptain 4 years ago
parent 834517de87
commit 64b8c46249
  1. 2
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  2. 2
      app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java
  3. 2
      app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
  4. 13
      app/src/main/java/com/github/tvbox/osc/ui/adapter/CheckboxSearchAdapter.java
  5. 24
      app/src/main/java/com/github/tvbox/osc/ui/dialog/SearchCheckboxDialog.java
  6. 2
      app/src/main/java/com/github/tvbox/osc/ui/dialog/SelectDialog.java
  7. 33
      app/src/main/java/com/github/tvbox/osc/util/SearchHelper.java

@ -124,7 +124,7 @@ public class DetailActivity extends BaseActivity {
private String preFlag="";
private boolean firstReverse;
private V7GridLayoutManager mGridViewLayoutMgr = null;
private HashMap<String, SourceBean> mCheckSources = null;
private HashMap<String, String> mCheckSources = null;
@Override
protected int getLayoutResID() {

@ -78,7 +78,7 @@ public class FastSearchActivity extends BaseActivity {
private String searchFilterKey = ""; // 过滤的key
private HashMap<String, ArrayList<Movie.Video>> resultVods; // 搜索结果
private List<String> quickSearchWord = new ArrayList<>();
private HashMap<String, SourceBean> mCheckSources = null;
private HashMap<String, String> mCheckSources = null;
private View.OnFocusChangeListener focusChangeListener = new View.OnFocusChangeListener() {
@Override

@ -83,7 +83,7 @@ public class SearchActivity extends BaseActivity {
private String searchTitle = "";
private TextView tvSearchCheckboxBtn;
private HashMap<String, SourceBean> mCheckSources = null;
private HashMap<String, String> mCheckSources = null;
private SearchCheckboxDialog mSearchCheckboxDialog = null;
@Override

@ -15,8 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.bean.SourceBean;
import com.github.tvbox.osc.util.HawkConfig;
import com.orhanobut.hawk.Hawk;
import com.github.tvbox.osc.util.SearchHelper;
import org.jetbrains.annotations.NotNull;
@ -36,14 +35,14 @@ public class CheckboxSearchAdapter extends ListAdapter<SourceBean, CheckboxSearc
}
private void setCheckedSource(HashMap<String, SourceBean> checkedSources) {
private void setCheckedSource(HashMap<String, String> checkedSources) {
mCheckedSources = checkedSources;
}
private ArrayList<SourceBean> data = new ArrayList<>();
public HashMap<String, SourceBean> mCheckedSources = new HashMap<>();
public HashMap<String, String> mCheckedSources = new HashMap<>();
public void setData(List<SourceBean> newData, HashMap<String, SourceBean> checkedSources) {
public void setData(List<SourceBean> newData, HashMap<String, String> checkedSources) {
data.clear();
data.addAll(newData);
setCheckedSource(checkedSources);
@ -63,14 +62,14 @@ public class CheckboxSearchAdapter extends ListAdapter<SourceBean, CheckboxSearc
holder.oneSearchSource.setText(sourceBean.getName());
if (mCheckedSources != null) {
holder.oneSearchSource.setChecked(mCheckedSources.containsKey(sourceBean.getKey()));
Hawk.put(HawkConfig.SOURCES_FOR_SEARCH, mCheckedSources);
SearchHelper.putCheckedSources(mCheckedSources);
}
holder.oneSearchSource.setTag(sourceBean);
holder.oneSearchSource.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mCheckedSources.put(sourceBean.getKey(), sourceBean);
mCheckedSources.put(sourceBean.getKey(), "1");
} else {
mCheckedSources.remove(sourceBean.getKey());
}

@ -28,9 +28,9 @@ public class SearchCheckboxDialog extends BaseDialog{
private TextView clearAll;
private List<SourceBean> mSourceList;
public HashMap<String, SourceBean> mCheckSourcees = new HashMap<>();
public HashMap<String, String> mCheckSourcees = new HashMap<>();
public SearchCheckboxDialog(@NonNull @NotNull Context context, List<SourceBean> sourceList, HashMap<String, SourceBean> checkedSources) {
public SearchCheckboxDialog(@NonNull @NotNull Context context, List<SourceBean> sourceList, HashMap<String, String> checkedSources) {
super(context);
if (context instanceof Activity) {
setOwnerActivity((Activity) context);
@ -63,7 +63,23 @@ public class SearchCheckboxDialog extends BaseDialog{
mGridView.setLayoutManager(new V7LinearLayoutManager(getContext(), 1, false));
mGridView.setAdapter(checkboxSearchAdapter);
checkboxSearchAdapter.setData(mSourceList, mCheckSourcees);
int pos = 0;
if (mSourceList != null && mCheckSourcees != null) {
for(int i=0; i<mSourceList.size(); i++) {
String key = mSourceList.get(i).getKey();
if (mCheckSourcees.containsKey(key)) {
pos = i;
break;
}
}
}
final int scrollPosition = pos;
mGridView.post(new Runnable() {
@Override
public void run() {
mGridView.smoothScrollToPosition(scrollPosition);
}
});
checkAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@ -72,7 +88,7 @@ public class SearchCheckboxDialog extends BaseDialog{
if (mCheckSourcees.containsKey(sourceBean.getKey())) {
mCheckSourcees.remove(sourceBean.getKey());
} else {
mCheckSourcees.put(sourceBean.getKey(), sourceBean);
mCheckSourcees.put(sourceBean.getKey(), "1");
}
}
checkboxSearchAdapter.setData(mSourceList, mCheckSourcees);

@ -44,7 +44,7 @@ public class SelectDialog<T> extends BaseDialog {
tvRecyclerView.post(new Runnable() {
@Override
public void run() {
tvRecyclerView.scrollToPosition(select);
tvRecyclerView.smoothScrollToPosition(select);
}
});
}

@ -8,18 +8,43 @@ import java.util.HashMap;
public class SearchHelper {
public static HashMap<String, SourceBean> getSourcesForSearch() {
HashMap<String, SourceBean> mCheckSources = Hawk.get(HawkConfig.SOURCES_FOR_SEARCH, new HashMap<>());
public static HashMap<String, String> getSourcesForSearch() {
String api = Hawk.get(HawkConfig.API_URL, "");
if (api.isEmpty()) {
return null;
}
HashMap<String, String> mCheckSources = new HashMap<>();
try {
HashMap<String, HashMap<String, String>> mCheckSourcesForApi = Hawk.get(HawkConfig.SOURCES_FOR_SEARCH, new HashMap<String, HashMap<String, String>>());
mCheckSources = mCheckSourcesForApi.get(api);
} catch (Exception e) {
}
if (mCheckSources == null || mCheckSources.size() <= 0) {
if (mCheckSources == null) {
mCheckSources = new HashMap<String, String>();
}
for (SourceBean bean : ApiConfig.get().getSourceBeanList()) {
if (!bean.isSearchable()) {
continue;
}
mCheckSources.put(bean.getKey(), bean);
mCheckSources.put(bean.getKey(), "1");
}
Hawk.put(HawkConfig.SOURCES_FOR_SEARCH, mCheckSources);
}
return mCheckSources;
}
public static void putCheckedSources(HashMap<String, String> mCheckSources) {
String api = Hawk.get(HawkConfig.API_URL, "");
if (api.isEmpty()) {
return;
}
HashMap<String, HashMap<String, String>> mCheckSourcesForApi = Hawk.get(HawkConfig.SOURCES_FOR_SEARCH, new HashMap<String, HashMap<String, String>>());
if (mCheckSourcesForApi == null || mCheckSourcesForApi.isEmpty()) {
mCheckSourcesForApi = new HashMap<String, HashMap<String, String>>();
}
mCheckSourcesForApi.put(api, mCheckSources);
Hawk.put(HawkConfig.SOURCES_FOR_SEARCH, mCheckSourcesForApi);
}
}

Loading…
Cancel
Save