优化代码 - 从数组创建自定义文本视图并分配值

时间:2018-05-24 05:01:01

标签: android

此代码生成一些textview并使用数组为其赋值。

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);

     

查看child = getLayoutInflater()。inflate(R.layout.style_textview,null);

     

myLayout.addView(子);

     

// ------------------------------

     

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
}}

我愿意接受更好的建议。

1 个答案:

答案 0 :(得分:0)

像这样夸大视图:

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中定义