如何巧妙地初始化多个 TextView?

Posted

技术标签:

【中文标题】如何巧妙地初始化多个 TextView?【英文标题】:How to Initialize multiple TextViews neatly? 【发布时间】:2014-07-03 09:12:07 【问题描述】:

我想让这段代码更简洁,但我想保留每个 TextViews 引用/名称。

    airportCodeText1 = (TextView) findViewById(R.id.airportCode1);
    airportCodeText2 = (TextView) findViewById(R.id.airportCode2);
    airportText1 = (TextView) findViewById(R.id.airport1);
    airportText2 = (TextView) findViewById(R.id.airport2);
    departureTime = (TextView) findViewById(R.id.departureTime);
    arrivalTime = (TextView) findViewById(R.id.arrivalTime);
    flightNunberText = (TextView) findViewById(R.id.flightNoText);
    desk = (TextView) findViewById(R.id.desk);
    gate = (TextView) findViewById(R.id.gate);
    flightNumberTitle = (TextView) findViewById(R.id.flightNoTitle);
    deskTitle = (TextView) findViewById(R.id.deskTitle);
    gateTitle = (TextView) findViewById(R.id.gateTitle);

【问题讨论】:

现在整洁了吗?你在问什么? 假设我有 100 个这样的内容,我会淹没我的课在文本中,这将需要很长时间。如果我不需要引用,我会在 for 循环中创建一个数组。我正在为大量 TextView 寻找一种更简洁的初始化方式。 请问,你到底为什么会有 100 个!? 不要觉得我们在评判你,如果你告诉我们为什么你需要 100 个以及你打算用它们做什么,这可能会帮助我们想出一个解决方案:) 看看butterknife:github.com/JakeWharton/butterknife和android Annotations:github.com/excilys/androidannotations 【参考方案1】:

您可能应该只使用一种方法来为您希望初始化的不同变量声明 R.id。所以你应该首先在主体中声明该方法,然后使用该方法来初始化每个 findViewById 部分

对此我很感激,但如果此解决方案不适合您的需求,那么还有其他方法(包括列表视图)来完成相同的任务。

Public class yourclassname extends Activity implements OnClickListener 

Text View airportCodeText1, airportCodeText2, airporttext1, airporttext2, departureTime, arrivalTime, flightNumberText, desk, gate, flightNumberTitle, deskTitle, gateTitle;



@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_main);
        Initializer();
       

 private void initializer() 
        airportCodeText1 = (TextView) findViewById(R.id.airportCode1);
        //Repeat for each TextView 
        //I didnt wanna do the whole code for you.

       

【讨论】:

这似乎是最直接和最简单的方法。您还可以看到该方法的主要用途之一,以减少重复。 是的,我的意思是在同一解决方案周围还有其他方法,但这可能是基本 java 的最简单的使用,而无需引入复杂的库和更改。我可以尝试修改我的第二个解决方案以适应答案,但这可能需要一些时间

以上是关于如何巧妙地初始化多个 TextView?的主要内容,如果未能解决你的问题,请参考以下文章

绝对应该初始化的 TextView 的 NullPointerException [关闭]

android的textview怎么初始化

在代码中初始化的 TextView 上的 getHeight()

Android 中的 TextView 初始化。

如何高效地产生多个不重复的随机数?

Dubbo 服务启动初始化注解实现源码分析