android - 优化代码 - 从数组创建自定义文本视图并赋值
问题描述
此代码生成一些文本视图并使用数组为其赋值。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_list);
LinearLayout myLayout = (LinearLayout) findViewById(R.id.llContainer2);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int textViewCount = 24;
TextView[] pairs=new TextView[textViewCount];
for(int i=0; i<textViewCount; i++)
{
pairs[i] = new TextView(this);
pairs[i].setLayoutParams(lp);
pairs[i].setId(i);
pairs[i].setText(getString(R.string.t1));
//--------------------
pairs[i].setClickable(true);
pairs[i].setOnClickListener(this);
pairs[i].setTextColor(Color.parseColor("#4682B4"));
pairs[i].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 21);
pairs[i].setPadding(8,8,8,8);
//------------------
myLayout.addView(pairs[i]);
}}
我在 //-- 和 //-- 中发现这些代码是重复的。我正在寻找优化它的方法。我的想法 1. 在循环内膨胀 textview 布局并使用 customlayout.xml 2. 在开始时设置一次布局,因此它固有的布局来自父
试过了
LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
查看子 = getLayoutInflater().inflate(R.layout.style_textview, null);
myLayout.addView(child);
//------------------------------------------
LinearLayout 容器 = (LinearLayout) findViewById(R.id.llContainer);
查看 inflatedLayout= getLayoutInflater().inflate(R.layout.style_textview, null);
container.addView(inflatedLayout);
任何人都可以向我展示如何使用循环内的 xml 或膨胀父级。
其次,如何使用
public void onClick(View v) { switch (v.getId()){ case R.id.i: //start activity }}
我愿意接受更好的建议。
解决方案
像这样膨胀视图:
pairs[i] = (TextView) LayoutInflater.from(this).inflate(R.layout. style_textview, myLayout, false);
// Don't set Id by a code-defined value like this, use setTag for additional data or use View.generateViewId()
pairs[i].setId(i);
pairs[i].setText(getString(R.string.t1));
pairs[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Do stuff
}
}
myLayout.addView(pairs[i]);
LayoutParams
其他属性在xml中定义