Android Studio-从膨胀视图自动创建java类变量

Android Studio-从膨胀视图自动创建java类变量,java,android,variables,view,Java,Android,Variables,View,我对我的活动有很多看法,我希望能够从中获取价值,并在视图膨胀后加载价值。必须为每个字段创建特定于类的变量、特定于类的getter和特定于类的setter,这很烦人。看起来,一个热键或者一些能够自动创建一个变量的东西,该变量以您正在寻找的视图为目标,并且还可以为特定的视图类型生成getter和setter函数,这似乎是不需要动脑筋的 显然,有些视图比其他视图更难创建getter和setter,但文本框、复选框等基本字段应该非常容易 话虽如此,有没有人建议我不要整天做体力劳动 谢谢您将想要查看尝试使

我对我的活动有很多看法,我希望能够从中获取价值,并在视图膨胀后加载价值。必须为每个字段创建特定于类的变量、特定于类的getter和特定于类的setter,这很烦人。看起来,一个热键或者一些能够自动创建一个变量的东西,该变量以您正在寻找的视图为目标,并且还可以为特定的视图类型生成getter和setter函数,这似乎是不需要动脑筋的

显然,有些视图比其他视图更难创建getter和setter,但文本框、复选框等基本字段应该非常容易

话虽如此,有没有人建议我不要整天做体力劳动


谢谢

您将想要查看

尝试使用Android注释

比如说

EditText editText;
TextView textView;

@Override
public void onCreate(Bundle savedInstanceState) {

    .....
    myEditText = (EditText) findViewById(R.id.passwordEditText);
    textView = (TextView) findViewById(R.id.passwordText);
}
上述行可以替换为

@ViewById(R.id.passwordEditText)
EditText myEditText;

@ViewById(R.id.passwordText)
TextView textView;
会自动给你getters setters构造函数之类的东西
如果视图有助于消除findviewbyid,我已经编写了PHP代码,只需将xml文件粘贴到test.txt文件(创建后)并运行PHP代码即可。您需要xamp在笔记本电脑上运行php代码。我确信可以编写更小更好的代码

<?php

$keyword = 'android:id=';

$file = 'test.txt';
$contents = htmlspecialchars(file_get_contents($file));
$array = explode("\n", $contents);
$arrayToSearch = array_map('trim', $array);


customSearchIvVariable($keyword, $arrayToSearch);
echo "</Br></Br>";
customSearchIvBinding($keyword, $arrayToSearch);
echo "</Br></Br>";
customSearchTvVariable($keyword, $arrayToSearch);
echo "</Br></Br>";
customSearchTvBinding($keyword, $arrayToSearch);

function customSearchIvVariable($keyword, $arrayToSearch) {
    foreach ($arrayToSearch as $key => $arrayItem) {

        if (stristr($arrayItem, $keyword)) {

            $arrayItem = html_entity_decode($arrayItem, ENT_QUOTES, "UTF-8");
            $arrayItem = str_replace('android:id="@+id/l_people_you_may_like_', '', $arrayItem);
            $arrayItem = str_replace('"', '', $arrayItem);
            $arrayItem = str_replace('_', ' ', $arrayItem);
            $arrayItem = ucwords($arrayItem);
            $arrayItem = str_replace(' ', '', $arrayItem);
            $arrayItem = lcfirst($arrayItem);

            if (strpos($arrayItem, 'iv') !== false) {

                echo $arrayItem . ", ";
            }
        }
    }
}

function customSearchIvBinding($keyword, $arrayToSearch) {
    foreach ($arrayToSearch as $key => $arrayItem) {

        if (stristr($arrayItem, $keyword)) {

            $arrayItem = html_entity_decode($arrayItem, ENT_QUOTES, "UTF-8");
            $arrayItem = str_replace('android:id="@+id/l_people_you_may_like_', '', $arrayItem);
            $arrayItem = str_replace('"', '', $arrayItem);

            $arrayBinding = $arrayItem;

            $arrayItem = str_replace('_', ' ', $arrayItem);
            $arrayItem = ucwords($arrayItem);
            $arrayItem = str_replace(' ', '', $arrayItem);
            $arrayItem = lcfirst($arrayItem);

            if (strpos($arrayItem, 'iv') !== false) {

                echo $arrayItem . " ";
            }

            if (strpos($arrayBinding, 'iv') !== false) {

                echo "= itemView.findViewById(R.id.l_people_you_may_like_" . $arrayBinding . ");" . "</br>";
            }
        }
    }
}

function customSearchTvVariable($keyword, $arrayToSearch) {
    foreach ($arrayToSearch as $key => $arrayItem) {

        if (stristr($arrayItem, $keyword)) {

            $arrayItem = html_entity_decode($arrayItem, ENT_QUOTES, "UTF-8");
            $arrayItem = str_replace('android:id="@+id/l_people_you_may_like_', '', $arrayItem);
            $arrayItem = str_replace('"', '', $arrayItem);
            $arrayItem = str_replace('_', ' ', $arrayItem);
            $arrayItem = ucwords($arrayItem);
            $arrayItem = str_replace(' ', '', $arrayItem);
            $arrayItem = lcfirst($arrayItem);

            if (strpos($arrayItem, 'tv') !== false) {

                echo $arrayItem . ", ";
            }
        }
    }
}

function customSearchTvBinding($keyword, $arrayToSearch) {
    foreach ($arrayToSearch as $key => $arrayItem) {

        if (stristr($arrayItem, $keyword)) {

            $arrayItem = html_entity_decode($arrayItem, ENT_QUOTES, "UTF-8");
            $arrayItem = str_replace('android:id="@+id/l_people_you_may_like_', '', $arrayItem);
            $arrayItem = str_replace('"', '', $arrayItem);

            $arrayBinding = $arrayItem;

            $arrayItem = str_replace('_', ' ', $arrayItem);
            $arrayItem = ucwords($arrayItem);
            $arrayItem = str_replace(' ', '', $arrayItem);
            $arrayItem = lcfirst($arrayItem);

            if (strpos($arrayItem, 'tv') !== false) {

                echo $arrayItem . " ";
            }

            if (strpos($arrayBinding, 'tv') !== false) {

                echo "= itemView.findViewById(R.id.l_people_you_may_like_" . $arrayBinding . ");" . "</br>";
            }
        }
    }
}

跳过getter和setter。没错,这是一个选项,而且可能是我应该做的,因为我很生气。创建getter和setter看起来稍微干净一些,有时还保存重复的代码,但您是对的,它们可能是不必要的。但它仍然不能改变这样一个事实:我必须为我想要在XML布局中编辑的每个视图提供一个dam视图id,然后继续,然后在java类中再次为这些完全相同的视图编写多行代码,一次声明它,另一次在布局膨胀后为它提供到实际字段的链接。它只是变得单调乏味。谢谢大家迄今为止的回复。我通读了它们,它们正是我想要的。