new ui for script list

This commit is contained in:
hyb1996
2017-08-20 21:46:51 +08:00
parent 68de90b718
commit 5440788922
31 changed files with 783 additions and 337 deletions

View File

@@ -0,0 +1,63 @@
package com.stardust.widget;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Created by Stardust on 2017/8/19.
*/
public class AutoAdapter<DT> extends RecyclerView.Adapter<BindableViewHolder<DT>> {
private ViewHolderSupplier<? extends BindableViewHolder<DT>> mViewHolderSupplier;
private List<DT> mList = new ArrayList<>();
public AutoAdapter(ViewHolderSupplier<? extends BindableViewHolder<DT>> viewHolderSupplier) {
mViewHolderSupplier = viewHolderSupplier;
}
@Override
public BindableViewHolder<DT> onCreateViewHolder(ViewGroup parent, int viewType) {
return mViewHolderSupplier.createViewHolder(parent, viewType);
}
@Override
public void onBindViewHolder(BindableViewHolder<DT> holder, int position) {
holder.bind(mList.get(position), position);
}
@Override
public int getItemCount() {
return mList.size();
}
public void remove(DT data) {
int pos = mList.indexOf(data);
if (pos < 0)
return;
mList.remove(pos);
notifyItemRemoved(pos);
}
public void remove(int index) {
mList.remove(index);
notifyItemRemoved(index);
}
public void addAll(Collection<? extends DT> c) {
mList.addAll(c);
notifyItemRangeInserted(mList.size() - c.size() - 1, mList.size() - 1);
}
public void setData(Collection<? extends DT> c) {
mList.clear();
mList.addAll(c);
notifyDataSetChanged();
}
}

View File

@@ -1,8 +1,13 @@
package com.stardust.widget;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/**
* Created by Stardust on 2017/4/8.
*/
@@ -11,4 +16,18 @@ public abstract class ViewHolderSupplier<VH extends RecyclerView.ViewHolder> {
public abstract VH createViewHolder(ViewGroup parent, int viewType);
public static <VH extends RecyclerView.ViewHolder> ViewHolderSupplier<VH> of(final Class<VH> c, final int layoutRes) {
return new ViewHolderSupplier<VH>() {
@Override
public VH createViewHolder(ViewGroup parent, int viewType) {
try {
Constructor<VH> constructor = c.getConstructor(View.class);
return constructor.newInstance(LayoutInflater.from(parent.getContext()).inflate(layoutRes, parent, false));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
};
}
}