mirror of https://github.com/FongMi/TV.git
parent
0d8d3ca81c
commit
17763b21cd
@ -0,0 +1,99 @@ |
||||
package com.fongmi.android.tv.ui.adapter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.View; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.databinding.AdapterWordBinding; |
||||
import com.fongmi.android.tv.utils.Prefers; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHolder> { |
||||
|
||||
private final OnClickListener mListener; |
||||
private final List<String> mItems; |
||||
private final Gson mGson; |
||||
|
||||
public HistoryAdapter(OnClickListener listener) { |
||||
this.mListener = listener; |
||||
this.mGson = new Gson(); |
||||
this.mItems = getItems(); |
||||
this.mListener.onDataChanged(mItems.size()); |
||||
} |
||||
|
||||
public interface OnClickListener { |
||||
|
||||
void onItemClick(String item); |
||||
|
||||
void onDataChanged(int size); |
||||
} |
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { |
||||
|
||||
private final AdapterWordBinding binding; |
||||
|
||||
public ViewHolder(@NonNull AdapterWordBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
itemView.setOnClickListener(this); |
||||
itemView.setOnLongClickListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View view) { |
||||
mListener.onItemClick(mItems.get(getLayoutPosition())); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onLongClick(View v) { |
||||
mItems.remove(getLayoutPosition()); |
||||
notifyItemRemoved(getLayoutPosition()); |
||||
Prefers.putKeyword(mGson.toJson(mItems)); |
||||
mListener.onDataChanged(getItemCount()); |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
private List<String> getItems() { |
||||
if (Prefers.getKeyword().isEmpty()) return new ArrayList<>(); |
||||
return mGson.fromJson(Prefers.getKeyword(), new TypeToken<List<String>>() {}.getType()); |
||||
} |
||||
|
||||
private void check(String item) { |
||||
int index = mItems.indexOf(item); |
||||
if (index == -1) return; |
||||
mItems.remove(index); |
||||
notifyItemRemoved(index); |
||||
} |
||||
|
||||
public void add(String item) { |
||||
check(item); |
||||
mItems.add(0, item); |
||||
notifyItemInserted(0); |
||||
Prefers.putKeyword(mGson.toJson(mItems)); |
||||
mListener.onDataChanged(getItemCount()); |
||||
} |
||||
|
||||
@Override |
||||
public int getItemCount() { |
||||
return mItems.size(); |
||||
} |
||||
|
||||
@NonNull |
||||
@Override |
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
||||
return new ViewHolder(AdapterWordBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { |
||||
holder.binding.text.setText(mItems.get(position)); |
||||
} |
||||
} |
||||
@ -0,0 +1,67 @@ |
||||
package com.fongmi.android.tv.ui.adapter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.View; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.databinding.AdapterWordBinding; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class WordAdapter extends RecyclerView.Adapter<WordAdapter.ViewHolder> { |
||||
|
||||
private final OnClickListener mListener; |
||||
private final List<String> mItems; |
||||
|
||||
public WordAdapter(OnClickListener listener) { |
||||
this.mItems = new ArrayList<>(); |
||||
this.mListener = listener; |
||||
} |
||||
|
||||
public interface OnClickListener { |
||||
|
||||
void onItemClick(String item); |
||||
} |
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { |
||||
|
||||
private final AdapterWordBinding binding; |
||||
|
||||
public ViewHolder(@NonNull AdapterWordBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
itemView.setOnClickListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View view) { |
||||
mListener.onItemClick(mItems.get(getLayoutPosition())); |
||||
} |
||||
} |
||||
|
||||
public void addAll(List<String> items) { |
||||
mItems.clear(); |
||||
mItems.addAll(items); |
||||
notifyDataSetChanged(); |
||||
} |
||||
|
||||
@Override |
||||
public int getItemCount() { |
||||
return mItems.size(); |
||||
} |
||||
|
||||
@NonNull |
||||
@Override |
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
||||
return new ViewHolder(AdapterWordBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { |
||||
holder.binding.text.setText(mItems.get(position)); |
||||
} |
||||
} |
||||
@ -1,48 +0,0 @@ |
||||
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.databinding.AdapterWordBinding; |
||||
|
||||
public class WordPresenter extends Presenter { |
||||
|
||||
private final OnClickListener mListener; |
||||
|
||||
public WordPresenter(OnClickListener listener) { |
||||
this.mListener = listener; |
||||
} |
||||
|
||||
public interface OnClickListener { |
||||
void onItemClick(String text); |
||||
} |
||||
|
||||
@Override |
||||
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) { |
||||
return new ViewHolder(AdapterWordBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object object) { |
||||
ViewHolder holder = (ViewHolder) viewHolder; |
||||
holder.binding.text.setText(object.toString()); |
||||
setOnClickListener(holder, view -> mListener.onItemClick(object.toString())); |
||||
} |
||||
|
||||
@Override |
||||
public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { |
||||
} |
||||
|
||||
public static class ViewHolder extends Presenter.ViewHolder { |
||||
|
||||
private final AdapterWordBinding binding; |
||||
|
||||
public ViewHolder(@NonNull AdapterWordBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue