mirror of https://github.com/FongMi/TV.git
parent
23ee9e9283
commit
3402edee79
@ -0,0 +1,79 @@ |
||||
package com.fongmi.android.tv.ui.custom.dialog; |
||||
|
||||
import android.view.LayoutInflater; |
||||
|
||||
import androidx.fragment.app.FragmentActivity; |
||||
import androidx.lifecycle.ViewModelProvider; |
||||
|
||||
import com.fongmi.android.tv.bean.Vod; |
||||
import com.fongmi.android.tv.databinding.DialogEpisodeListBinding; |
||||
import com.fongmi.android.tv.model.SiteViewModel; |
||||
import com.fongmi.android.tv.ui.adapter.EpisodeAdapter; |
||||
import com.fongmi.android.tv.ui.custom.ViewType; |
||||
import com.fongmi.android.tv.utils.Utils; |
||||
import com.google.android.material.sidesheet.SideSheetDialog; |
||||
|
||||
import java.util.List; |
||||
|
||||
public class EpisodeListDialog implements EpisodeAdapter.OnClickListener { |
||||
|
||||
private final FragmentActivity activity; |
||||
private DialogEpisodeListBinding binding; |
||||
private List<Vod.Flag.Episode> episodes; |
||||
private SiteViewModel viewModel; |
||||
private EpisodeAdapter adapter; |
||||
private SideSheetDialog dialog; |
||||
|
||||
public static EpisodeListDialog create(FragmentActivity activity) { |
||||
return new EpisodeListDialog(activity); |
||||
} |
||||
|
||||
public EpisodeListDialog(FragmentActivity activity) { |
||||
this.activity = activity; |
||||
} |
||||
|
||||
public EpisodeListDialog episodes(List<Vod.Flag.Episode> episodes) { |
||||
this.episodes = episodes; |
||||
return this; |
||||
} |
||||
|
||||
public void show() { |
||||
initDialog(); |
||||
initView(); |
||||
} |
||||
|
||||
private void initDialog() { |
||||
binding = DialogEpisodeListBinding.inflate(LayoutInflater.from(activity)); |
||||
dialog = new SideSheetDialog(activity); |
||||
dialog.setContentView(binding.getRoot()); |
||||
dialog.show(); |
||||
} |
||||
|
||||
private void initView() { |
||||
Utils.hideSystemUI(dialog.getWindow()); |
||||
setRecyclerView(); |
||||
setViewModel(); |
||||
setEpisode(); |
||||
} |
||||
|
||||
private void setRecyclerView() { |
||||
binding.recycler.setHasFixedSize(true); |
||||
binding.recycler.setItemAnimator(null); |
||||
binding.recycler.setAdapter(adapter = new EpisodeAdapter(this, ViewType.GRID)); |
||||
} |
||||
|
||||
private void setViewModel() { |
||||
viewModel = new ViewModelProvider(activity).get(SiteViewModel.class); |
||||
} |
||||
|
||||
private void setEpisode() { |
||||
adapter.addAll(episodes); |
||||
binding.recycler.scrollToPosition(adapter.getPosition()); |
||||
} |
||||
|
||||
@Override |
||||
public void onItemClick(Vod.Flag.Episode item) { |
||||
viewModel.setEpisode(item); |
||||
dialog.dismiss(); |
||||
} |
||||
} |
||||
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent"> |
||||
|
||||
<androidx.recyclerview.widget.RecyclerView |
||||
android:id="@+id/recycler" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:padding="10dp" |
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" |
||||
tools:itemCount="10" |
||||
tools:listitem="@layout/adapter_episode_grid" /> |
||||
|
||||
</FrameLayout> |
||||
Loading…
Reference in new issue