如何巧妙地初始化多个 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 [关闭]