程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

bindView注释代码转成findByViewId脚本

发布于2021-03-13 14:02     阅读(636)     评论(0)     点赞(10)     收藏(3)


bindView注释代码转成findByViewId脚本

  在接手代码的时候一般回遇到有用butterknife来绑定控件的习惯,butterknife确实是个非常方便的控件,但是在实际使用的时候还是会存在一部分问题,彻底避免自然是改回原来的控件绑定方式,但是一个个打太过麻烦,我这里就写了个绑定脚本,直接放到Java代码里运行就行。

在线Java编译器:https://tool.lu/coderunner/

注意:

1、复制进去的化有绑定控件代码就行,其他非绑定控件代码会过滤掉。
2、在线Java运行编译器里直接不能复制,不然会出现String格式不符异常,可以用word文档处理(回车,前置空格即可);
例:@BindView(R2.id.middlegiftLayout)View mMiddleGiftLayout;@BindView(R2.id.middlegiftHead)ImageView mMiddleGiftHead;@BindView(R2.id.middleSendName)TextView mMiddleSendName;@BindView(R2.id.middleGetName)TextView mMiddleGetName;@BindView(R2.id.middleText)TextView mMiddleText;@BindView(R2.id.middleGiftName)TextView mMiddleGiftName;
3、可以直接在Android测试类里复制运行使用,复制到s对象里就行,里面会自动转换string未规范形式,然后测试运行打印出来的就是了。

java脚本

class Untitled {
	    public static void main(String[] args) {
            String s="@BindView(R2.id.simple_room)\n" +
                    "    RoundedImageView simple_room;\n" +
                    "    @BindView(R2.id.viewpager)\n" +
                    "    ViewPager mViewPager;\n" +
                    "    BottomAdapter mAdapter;\n" +
                    "\n" +
                    "    @BindView(R2.id.room_type)\n" +
                    "    TextView room_type;\n" +
                    "    @BindView(R2.id.room_name)\n" +
                    "    TextView room_name;\n" +
                    "    @BindView(R2.id.online_room)\n" +
                    "    TextView online_room;\n" +
                    "    @BindView(R2.id.exmine)\n" +
                    "    ImageView exmine;\n" +
                    "    @BindView(R2.id.collect)\n" +
                    "    TextView mCollect;\n" +
                    "    @BindView(R2.id.roomId)\n" +
                    "    TextView mRoomId;";//需要转换的内容放这
            s=s.replaceAll("\\n","");
            s=s.replaceAll("    ","");
            String[] t=s.split(";");
            StringBuilder f= new StringBuilder();
           for (String value : t) {
            if (value.contains("R2.id.")) {
                String id = value.replaceAll("@BindView\\(R2.id.", "").split("\\)")[0];
                String name = value.split("\\)")[1].split(" ")[1];
                f.append(name).append("=findViewById(R.id.").append(id).append(");\n");
            }
        }
            System.out.println(f);
    }
}

转换结果

在这里插入图片描述

升级版

可以放回类型,应对需要返回类型的情况。

class Untitled {
	    public static void main(String[] args) {
            String s="@BindView(R2.id.queue_list2)\n" +
                "    RecyclerView queue_list2;\n" +
                "    @BindView(R2.id.typePrivate)\n" +
                "    RelativeLayout mPrivateLayout;\n" +
                "\n" +
                "    @BindView(R2.id.queue_list)\n" +
                "    RecyclerView queue_list;\n" +
                "\n" +
                "    @BindView(R2.id.equipment_linyout)\n" +
                "    LinearLayout equipment_linyout;\n" +
                "    @BindView(R2.id.send_linyout)\n" +
                "    LinearLayout send_linyout;\n" +
                "    @BindView(R2.id.rankLayout)\n" +
                "    View mRankLayout;\n" +
                "    @BindView(R2.id.go_back)\n" +
                "    ImageView go_back;\n" +
                "    @BindView(R2.id.edt_input_text)\n" +
                "    EditText edt_input_text;\n" +
                "\n" +
                "    @BindView(R2.id.egg)\n" +
                "    ImageView mEgg;\n" +
                "    @BindView(R2.id.middle_gift)\n" +
                "    View MiddleGift;\n";//需要转换的内容放这
            s=s.replaceAll("\\n","");
            s=s.replaceAll("    ","");
            String[] t=s.split(";");
            StringBuilder f= new StringBuilder();
           for (String value : t) {
            if (value.contains("R2.id.")) {
                String id = value.replaceAll("@BindView\\(R2.id.", "").split("\\)")[0];
                String name = value.split("\\)")[1].split(" ")[1];
				String type=value.split("\\)")[1].split(" ")[0];
                f.append(name).append("=("+type+")findViewById(R.id.").append(id).append(");\n");
            }
        }
            System.out.println(f);
    }
}

升级版转换结果

在这里插入图片描述



所属网站分类: 技术文章 > 博客

作者:飞翔公园

链接:http://www.javaheidong.com/blog/article/114367/c850bc66c919dd14888d/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)