我在android工作,
在我的应用程序中,我可以选择添加TextViews。
我最多可以有5个TextView,其ID为 - Number1,Number2,Number3等。
我在main_activity.xml中直接设置了第一个ID,其余的是资源文件
<resources>
<item type="id" name="Number2" />
<item type="id" name="Number3" />
<item type="id" name="Number4" />
<item type="id" name="Number5" />
</resources>
我有当前的文字视图数量。
我正在寻找一种只使用当前文本视图数量来访问textview的好方法。
我的意思是,
而不是
switch (TextViewNumber) {
case 2:
findViewById(R.id.Number2);
break;
case 3:
findViewById(R.id.Number3);
break;
case 4:
findViewById(R.id.Number4);
break;
}
我想在一些通用中使用TextViews( TextViewNumber )的数量,以更好的性能方式..
设置TextView时遇到同样的问题:
switch (TextViewNumber) {
case 2:
newTextView.setId(R.id.IngredientNumber2);
break;
case 3:
newTextView.setId(R.id.IngredientNumber3);
break;
case 4:
newTextView.setId(R.id.IngredientNumber4);
break;
}
处理移动视图的类:
public class LayoutOrganizer {
public static RelativeLayout.LayoutParams getRelativeLayoutParams(int TExtViewCount, TextView textView) {
RelativeLayout.LayoutParams myLayoutParams = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
myLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
// this is where I need to access the view ID
myLayoutParams.addRule(RelativeLayout.BELOW, ViewID);
return myLayoutParams;
}
}
有关更好地使用TextViewNumber的任何想法吗?
答案 0 :(得分:1)
您可以尝试以下操作:
TextView textView = this.findViewById(this.getResources().getIdentifier("Number" + TextViewNumber, "id", this.getPackageName()));
请注意,Resources#getIdentifier(String, String, String)
可以返回0,这是一个无效的ID。
答案 1 :(得分:0)
您可以将它们全部放入onCreate中的数组中。
private ArrayList<TextView> textviews = new ArrayList<TextView>(textViewCount);
@Override
protected void onCreate(Bundle savedInstanceState)
{
textViews.add(findViewById(R.id.Number1));
textViews.add(findViewById(R.id.Number2));
...
// Then access them using a number
Textview textView2 = textViews.get(1);
}
或者,如果他们都是父视图中的兄弟姐妹,您可以使用parent.getChildAt(textViewIndex);