[mobile] support search pg

pull/137/head
FongMi 3 years ago
parent 8974eb483e
commit 16cc726b52
  1. 10
      app/src/main/java/com/fongmi/android/tv/bean/Collect.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  3. 22
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java
  4. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/CollectAdapter.java

@ -13,9 +13,9 @@ public class Collect {
private boolean activated;
public static Collect all() {
Collect all = new Collect(Site.get("all", ResUtil.getString(R.string.all)), new ArrayList<>());
all.setActivated(true);
return all;
Collect item = new Collect(Site.get("all", ResUtil.getString(R.string.all)), new ArrayList<>());
item.setActivated(true);
return item;
}
public static Collect create(List<Vod> list) {
@ -42,4 +42,8 @@ public class Collect {
public void setActivated(boolean activated) {
this.activated = activated;
}
public boolean isAll() {
return getSite().getKey().equals("all");
}
}

@ -202,7 +202,7 @@ public class SiteViewModel extends ViewModel {
}
public void searchContent(Site site, String keyword, String page) {
execute(search, () -> {
execute(result, () -> {
if (site.getType() == 3) {
Spider spider = ApiConfig.get().getCSP(site);
String searchContent = spider.searchContent(Trans.t2s(keyword), false, page);

@ -35,6 +35,7 @@ import com.fongmi.android.tv.ui.adapter.VodAdapter;
import com.fongmi.android.tv.ui.adapter.WordAdapter;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.base.ViewType;
import com.fongmi.android.tv.ui.custom.CustomScroller;
import com.fongmi.android.tv.ui.custom.CustomTextListener;
import com.fongmi.android.tv.ui.custom.dialog.SiteDialog;
import com.fongmi.android.tv.utils.Prefers;
@ -51,13 +52,14 @@ import java.util.concurrent.Executors;
import okhttp3.Call;
import okhttp3.Response;
public class CollectActivity extends BaseActivity implements SiteCallback, WordAdapter.OnClickListener, RecordAdapter.OnClickListener, CollectAdapter.OnClickListener, VodAdapter.OnClickListener {
public class CollectActivity extends BaseActivity implements CustomScroller.Callback, SiteCallback, WordAdapter.OnClickListener, RecordAdapter.OnClickListener, CollectAdapter.OnClickListener, VodAdapter.OnClickListener {
private ActivityCollectBinding mBinding;
private CollectAdapter mCollectAdapter;
private RecordAdapter mRecordAdapter;
private ExecutorService mExecutor;
private WordAdapter mWordAdapter;
private CustomScroller mScroller;
private SiteViewModel mViewModel;
private VodAdapter mVodAdapter;
private List<Site> mSites;
@ -87,6 +89,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA
@Override
protected void initView(Bundle savedInstanceState) {
mScroller = new CustomScroller(this);
mSites = new ArrayList<>();
setRecyclerView();
setLayoutSize();
@ -120,6 +123,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA
mBinding.collect.setItemAnimator(null);
mBinding.collect.setAdapter(mCollectAdapter = new CollectAdapter(this));
mBinding.recycler.setHasFixedSize(true);
mBinding.recycler.addOnScrollListener(mScroller);
mBinding.recycler.setAdapter(mVodAdapter = new VodAdapter(this));
mBinding.wordRecycler.setHasFixedSize(true);
mBinding.wordRecycler.setAdapter(mWordAdapter = new WordAdapter(this));
@ -145,10 +149,17 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA
private void setViewModel() {
mViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mViewModel.search.observe(this, result -> {
if (mCollectAdapter.getPosition() == 0) mVodAdapter.addAll(result.getList());
if (mCollectAdapter.getActivated().isAll()) mVodAdapter.addAll(result.getList());
mCollectAdapter.add(Collect.create(result.getList()));
mCollectAdapter.add(result.getList());
});
mViewModel.result.observe(this, result -> {
int size = result.getList().size();
mScroller.endLoading(size == 0);
boolean same = size > 0 && mCollectAdapter.getActivated().getSite().equals(result.getList().get(0).getSite());
if (same) mCollectAdapter.getActivated().getList().addAll(result.getList());
if (same) mVodAdapter.addAll(result.getList());
});
}
private void checkKeyword() {
@ -270,6 +281,13 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA
return false;
}
@Override
public void onLoadMore(String page) {
if (mCollectAdapter.getActivated().isAll()) return;
mViewModel.searchContent(mCollectAdapter.getActivated().getSite(), mBinding.keyword.getText().toString(), page);
mScroller.setLoading(true);
}
@Override
public void onBackPressed() {
if (isVisible(mBinding.result)) {

@ -48,6 +48,10 @@ public class CollectAdapter extends RecyclerView.Adapter<CollectAdapter.ViewHold
return 0;
}
public Collect getActivated() {
return mItems.get(getPosition());
}
public void setActivated(int position) {
for (int i = 0; i < mItems.size(); i++) mItems.get(i).setActivated(i == position);
notifyDataSetChanged();

Loading…
Cancel
Save