mirror of https://github.com/FongMi/TV.git
parent
519cbaed65
commit
e3ce57f6a2
@ -1,110 +0,0 @@ |
||||
package com.fongmi.android.tv.ui.adapter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.bean.Channel; |
||||
import com.fongmi.android.tv.bean.Group; |
||||
import com.fongmi.android.tv.databinding.AdapterChannelBinding; |
||||
import com.fongmi.android.tv.ui.adapter.holder.ChannelHolder; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class ChannelAdapter extends RecyclerView.Adapter<ChannelHolder> { |
||||
|
||||
private OnItemClickListener mListener; |
||||
private final List<Channel> mItems; |
||||
private Channel current; |
||||
private boolean focus; |
||||
private int position; |
||||
private Group group; |
||||
|
||||
public ChannelAdapter(OnItemClickListener listener) { |
||||
this.mItems = new ArrayList<>(); |
||||
this.mListener = listener; |
||||
} |
||||
|
||||
public interface OnItemClickListener { |
||||
|
||||
void onItemClick(Channel item); |
||||
} |
||||
|
||||
private Channel getItem() { |
||||
return mItems.get(position); |
||||
} |
||||
|
||||
public Channel getCurrent() { |
||||
return current; |
||||
} |
||||
|
||||
public void setCurrent(Channel current) { |
||||
this.current = current; |
||||
} |
||||
|
||||
public boolean isFocus() { |
||||
return focus; |
||||
} |
||||
|
||||
public void setFocus(boolean focus) { |
||||
this.focus = focus; |
||||
} |
||||
|
||||
public int getPosition() { |
||||
return position; |
||||
} |
||||
|
||||
public void setPosition(int position) { |
||||
this.position = position; |
||||
} |
||||
|
||||
public Group getGroup() { |
||||
return group; |
||||
} |
||||
|
||||
public void setGroup(Group group) { |
||||
this.group = group; |
||||
} |
||||
|
||||
public void addAll(Group group) { |
||||
setGroup(group); |
||||
mItems.clear(); |
||||
mItems.addAll(group.getChannel()); |
||||
notifyDataSetChanged(); |
||||
} |
||||
|
||||
public void setSelected() { |
||||
for (int i = 0; i < mItems.size(); i++) mItems.get(i).setSelect(i == position); |
||||
notifyDataSetChanged(); |
||||
setFocus(true); |
||||
} |
||||
|
||||
public void setChannel() { |
||||
if (position < 0 || position > mItems.size() - 1) return; |
||||
//if (!getGroup().isHidden()) getItem().putKeep();
|
||||
mListener.onItemClick(getItem()); |
||||
getGroup().setPosition(position); |
||||
getItem().setGroup(getGroup()); |
||||
setCurrent(getItem()); |
||||
setSelected(); |
||||
} |
||||
|
||||
@Override |
||||
public int getItemCount() { |
||||
return mItems.size(); |
||||
} |
||||
|
||||
@NonNull |
||||
@Override |
||||
public ChannelHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
||||
return new ChannelHolder(this, AdapterChannelBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(@NonNull ChannelHolder holder, int position) { |
||||
holder.setView(mItems.get(position)); |
||||
} |
||||
} |
||||
@ -1,90 +0,0 @@ |
||||
package com.fongmi.android.tv.ui.adapter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.bean.Group; |
||||
import com.fongmi.android.tv.databinding.AdapterGroupBinding; |
||||
import com.fongmi.android.tv.ui.adapter.holder.GroupHolder; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class GroupAdapter extends RecyclerView.Adapter<GroupHolder> { |
||||
|
||||
private OnItemClickListener mListener; |
||||
private final List<Group> mItems; |
||||
private final List<Group> mHides; |
||||
private boolean focus; |
||||
private int position; |
||||
|
||||
public GroupAdapter(OnItemClickListener listener) { |
||||
this.mItems = new ArrayList<>(); |
||||
this.mHides = new ArrayList<>(); |
||||
this.mListener = listener; |
||||
} |
||||
|
||||
public interface OnItemClickListener { |
||||
|
||||
void onItemClick(Group item); |
||||
} |
||||
|
||||
private Group getItem() { |
||||
return mItems.get(position); |
||||
} |
||||
|
||||
public boolean isFocus() { |
||||
return focus; |
||||
} |
||||
|
||||
public void setFocus(boolean focus) { |
||||
this.focus = focus; |
||||
} |
||||
|
||||
public int getPosition() { |
||||
return position; |
||||
} |
||||
|
||||
public void setPosition(int position) { |
||||
this.position = position; |
||||
} |
||||
|
||||
public void addAll(List<Group> items) { |
||||
mItems.clear(); |
||||
addGroup(items); |
||||
notifyDataSetChanged(); |
||||
} |
||||
|
||||
private void addGroup(List<Group> items) { |
||||
for (Group item : items) if (item.isHidden()) mHides.add(item); else mItems.add(item); |
||||
} |
||||
|
||||
public void setSelected() { |
||||
for (int i = 0; i < mItems.size(); i++) mItems.get(i).setSelect(i == position); |
||||
notifyDataSetChanged(); |
||||
setFocus(true); |
||||
} |
||||
|
||||
public void setType() { |
||||
mListener.onItemClick(getItem()); |
||||
} |
||||
|
||||
@Override |
||||
public int getItemCount() { |
||||
return mItems.size(); |
||||
} |
||||
|
||||
@NonNull |
||||
@Override |
||||
public GroupHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
||||
return new GroupHolder(this, AdapterGroupBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(@NonNull GroupHolder holder, int position) { |
||||
holder.setView(mItems.get(position)); |
||||
} |
||||
} |
||||
@ -1,43 +0,0 @@ |
||||
package com.fongmi.android.tv.ui.adapter.holder; |
||||
|
||||
import android.view.View; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.bean.Channel; |
||||
import com.fongmi.android.tv.databinding.AdapterChannelBinding; |
||||
import com.fongmi.android.tv.ui.adapter.ChannelAdapter; |
||||
|
||||
public class ChannelHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { |
||||
|
||||
private final AdapterChannelBinding binding; |
||||
private final ChannelAdapter adapter; |
||||
|
||||
public ChannelHolder(ChannelAdapter adapter, @NonNull AdapterChannelBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
this.adapter = adapter; |
||||
itemView.setOnClickListener(this); |
||||
itemView.setOnLongClickListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View view) { |
||||
adapter.setPosition(getLayoutPosition()); |
||||
adapter.setChannel(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onLongClick(View view) { |
||||
adapter.setPosition(getLayoutPosition()); |
||||
return false; |
||||
} |
||||
|
||||
public void setView(Channel item) { |
||||
itemView.setSelected(item.isSelect()); |
||||
binding.name.setText(item.getName()); |
||||
binding.number.setText(item.getNumber()); |
||||
binding.icon.setVisibility(item.getVisible()); |
||||
} |
||||
} |
||||
@ -1,35 +0,0 @@ |
||||
package com.fongmi.android.tv.ui.adapter.holder; |
||||
|
||||
import android.view.View; |
||||
|
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.bean.Group; |
||||
import com.fongmi.android.tv.databinding.AdapterGroupBinding; |
||||
import com.fongmi.android.tv.ui.adapter.GroupAdapter; |
||||
|
||||
public class GroupHolder extends RecyclerView.ViewHolder implements View.OnClickListener { |
||||
|
||||
private final AdapterGroupBinding binding; |
||||
private final GroupAdapter adapter; |
||||
|
||||
public GroupHolder(GroupAdapter adapter, AdapterGroupBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
this.adapter = adapter; |
||||
itemView.setOnClickListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View view) { |
||||
adapter.setPosition(getLayoutPosition()); |
||||
adapter.setSelected(); |
||||
adapter.setType(); |
||||
} |
||||
|
||||
public void setView(Group item) { |
||||
itemView.setSelected(item.isSelect()); |
||||
binding.name.setText(item.getName()); |
||||
binding.icon.setVisibility(item.getVisible()); |
||||
} |
||||
} |
||||
@ -0,0 +1,53 @@ |
||||
package com.fongmi.android.tv.ui.presenter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.leanback.widget.Presenter; |
||||
|
||||
import com.fongmi.android.tv.bean.Channel; |
||||
import com.fongmi.android.tv.databinding.AdapterChannelBinding; |
||||
|
||||
public class ChannelPresenter extends Presenter { |
||||
|
||||
private final OnClickListener mListener; |
||||
|
||||
public ChannelPresenter(OnClickListener listener) { |
||||
this.mListener = listener; |
||||
} |
||||
|
||||
public interface OnClickListener { |
||||
void onItemClick(Channel item); |
||||
} |
||||
|
||||
@Override |
||||
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) { |
||||
return new ViewHolder(AdapterChannelBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object object) { |
||||
Channel item = (Channel) object; |
||||
ViewHolder holder = (ViewHolder) viewHolder; |
||||
holder.binding.name.setText(item.getName()); |
||||
holder.binding.number.setText(item.getNumber()); |
||||
holder.binding.icon.setVisibility(item.getVisible()); |
||||
holder.binding.getRoot().setActivated(item.isActivated()); |
||||
setOnClickListener(holder, view -> mListener.onItemClick(item)); |
||||
} |
||||
|
||||
@Override |
||||
public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { |
||||
} |
||||
|
||||
public static class ViewHolder extends Presenter.ViewHolder { |
||||
|
||||
private final AdapterChannelBinding binding; |
||||
|
||||
public ViewHolder(@NonNull AdapterChannelBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,52 @@ |
||||
package com.fongmi.android.tv.ui.presenter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.leanback.widget.Presenter; |
||||
|
||||
import com.fongmi.android.tv.bean.Group; |
||||
import com.fongmi.android.tv.databinding.AdapterGroupBinding; |
||||
|
||||
public class GroupPresenter extends Presenter { |
||||
|
||||
private final OnClickListener mListener; |
||||
|
||||
public GroupPresenter(OnClickListener listener) { |
||||
this.mListener = listener; |
||||
} |
||||
|
||||
public interface OnClickListener { |
||||
void onItemClick(Group item); |
||||
} |
||||
|
||||
@Override |
||||
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) { |
||||
return new ViewHolder(AdapterGroupBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object object) { |
||||
Group item = (Group) object; |
||||
ViewHolder holder = (ViewHolder) viewHolder; |
||||
holder.binding.name.setText(item.getName()); |
||||
holder.binding.icon.setVisibility(item.getVisible()); |
||||
holder.binding.getRoot().setActivated(item.isActivated()); |
||||
setOnClickListener(holder, view -> mListener.onItemClick(item)); |
||||
} |
||||
|
||||
@Override |
||||
public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { |
||||
} |
||||
|
||||
public static class ViewHolder extends Presenter.ViewHolder { |
||||
|
||||
private final AdapterGroupBinding binding; |
||||
|
||||
public ViewHolder(@NonNull AdapterGroupBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
} |
||||
} |
||||
} |
||||
@ -1,5 +1,5 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android"> |
||||
<item android:drawable="@drawable/shape_channel" android:state_focused="true" /> |
||||
<item android:drawable="@drawable/shape_channel" android:state_selected="true" /> |
||||
<item android:drawable="@drawable/shape_channel" android:state_activated="true" /> |
||||
</selector> |
||||
@ -1,5 +1,5 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android"> |
||||
<item android:drawable="@drawable/shape_group" android:state_focused="true" /> |
||||
<item android:drawable="@drawable/shape_group" android:state_selected="true" /> |
||||
<item android:drawable="@drawable/shape_group" android:state_activated="true" /> |
||||
</selector> |
||||
Loading…
Reference in new issue