虽然编写我自己的适配器扩展了ArrayAdapter类,但我发现了不同的构造函数,我注意到它们都需要一个textViewResourceId参数。所以一开始,我决定,我会养活我的自定义适配器类android.R.id.text1:我在开发过程中是否始终需要textViewResourceId参数?
MyAdapter adapter = new MyAdapter(this, R.layout.myRow, android.R.id.text1);
但是,后来,我决定重写getView方法在那里我会
TextView label = (TextView) myRow.findViewById(android.R.id.text1);
label.setText("Position #" + position);
哪些工作正常。但是后来出现了这个问题:如果我正在执行如何显示行的逻辑,是否真的有必要在启动我的自定义适配器时向构造函数提供一个textViewResourceId?或者当您覆盖getView时,该参数不再必要?如果我的想法是正确的,那么知道你将重写显示行为的实例化适配器的常见做法是什么?
(upvote)而不是传递0,我会使用一个不需要'textViewResouceId'的构造函数。 – Sam
@Sam - 如果你想使用ArrayAdapter,你需要传递textViewResourceId。没有避免,因为它期望它(即使它无效)。您可以复制源代码并重写ArrayAdapter,使其不需要textViewResourceId。但是,为了简单地避免传递一个int,其实并不值得。 – dymmeh
@Sam - 或者你可以创建自己的适配器来扩展BaseAdapter。你不会得到内置的数组处理,所以你需要自己做。但是,您可以根据自己的需要自定义它,并在处理阵列的基本功能中构建 – dymmeh