强大的Android Studio之省时开发--代码模板

来源:互联网 发布:淘宝网上禁止出售 编辑:程序博客网 时间:2024/06/05 19:30

在写有关RecyclerView方面的代码的时候,每次都要自己写适配器,而且适配器的大体结构都一样,但是在android studio中却不能一键创建适配器。如果有可以快速创建适配器,并且需要传入的类型由我们自己控制,其他的一些重写的方法自动生成,那这样不就能节省了一些重复的操作了嘛,省时又省力。

先来看一下图先:

创建出来的适配器类:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> {    private Context mContext;    private List<String> mStrings;    private LayoutInflater mLayoutInflater;    private OnStringItemClickListener mOnStringItemClickListener;    public void setOnStringItemClickListener(OnStringItemClickListener onStringItemClickListener) {        mOnStringItemClickListener = onStringItemClickListener;    }    public MyAdapter(Context context, List<String> mStrings) {        mContext = context;        this.mStrings = mStrings;        mLayoutInflater = LayoutInflater.from(mContext);    }    @Override    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = mLayoutInflater.inflate(, parent, false);//加载Item布局        return new MyHolder(view);    }    @Override    public void onBindViewHolder(MyHolder holder, int position) {    }    @Override    public int getItemCount() {        return mStrings.size();    }    class MyHolder extends RecyclerView.ViewHolder {//这里写Item的控件        public MyHolder(View itemView) {            super(itemView);        }    }    interface OnStringItemClickListener {//自定义点击时间回调,根据需要决定        void onStringClick(View v, int position);    }}
这样我们不用在手动写实现RecyclerView.Adapter和继承RecyclerView.ViewHolder,Item的类型等,只需要关注于加载Item布局,还有数据的适配了。

是不是很方便?接下来就来说怎么做这种代码模板。


依次打开 file --> Settings,找到File and Code Templates,如图:


像上面那样的适配器模板代码:

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end//这里是创建适配器所在的包名等import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import java.util.List;#parse("myCustomFileHeader.java")//这是一个类的描述,比如类名称,创建时间,创建者等信息,这也是可以自定义的public class ${NAME} extends RecyclerView.Adapter<${NAME}.${ViewHolder}Holder>{//${NAME}就是一开始输入的类名,MyAdapterprivate Context mContext;    private List<${MyBean}> m${MyBean}s;//Item类型,在上面的截图中可以看到的,是可以输入的,上面输入的是String    private LayoutInflater mLayoutInflater;    private On${MyBean}ItemClickListener mOn${MyBean}ItemClickListener;    public void setOn${MyBean}ItemClickListener(On${MyBean}ItemClickListener on${MyBean}ItemClickListener){        mOn${MyBean}ItemClickListener = on${MyBean}ItemClickListener;    }    public ${NAME}(Context context, List<${MyBean}> m${MyBean}s) {        mContext = context;        this.m${MyBean}s = m${MyBean}s;        mLayoutInflater = LayoutInflater.from(mContext);    }    @Override    public ${ViewHolder}Holder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = mLayoutInflater.inflate(,parent,false);        return new ${ViewHolder}Holder (view);    }    @Override    public void onBindViewHolder(${ViewHolder}Holder holder, int position) {            }    @Override    public int getItemCount() {        return m${MyBean}s.size();    }    class ${ViewHolder}Holder extends RecyclerView.ViewHolder{//同理,这个 ${ViewHolder}也是可以输入的,上面输入的是MY        public ${ViewHolder}Holder(View itemView) {            super(itemView);        }    }    interface On${MyBean}ItemClickListener{//这里是自定义的回调接口,作为每个Item点击事件的回调,这个根据需要要决定就行了。        void on${MyBean}Click(View v,int position);    }}
注:${NAME},${MyBean},${ViewHolder},看到这三个的写法了吗,其实我们需要手动输入的变量就可以使用这种   ${xxx}  的写法了,任你自定义。

编辑好自己的代码模板后,apply一下,就可以使用了。

看下来是不是感觉很简单,觉得有用可以自己马上动手试一下写一个属于自己的代码模板吧,从此告别每次都要自己再写一遍适配器的窘境了。

0 0
原创粉丝点击