Android:控制动态添加的视图的最佳方法?

时间:2015-07-16 05:14:02

标签: android android-view

作为标题,我想知道是否有一种控制动态添加的视图的最佳方法。 (我们必须继续引用已添加的视图)

有些时候,对于复杂的请求,我们必须在运行时添加视图。这是一些方法。就我而言:

  1. 有时我通过listview/recyclerview使用control viewlist/recycleview adapter

  2. 其他方式是使用hashmap

  3. 你还有其他想法吗?以及它是如何工作的?

1 个答案:

答案 0 :(得分:1)

我更喜欢用Java和XML文件定义View。像这样创建的视图使您能够调用自己的Java方法,但不需要在Java中动态创建整个布局。小例子:

<强> MyView.java:

public class MyView extends LinearLayout {

    TextView textView;

    public MyView(Context context) {
        super(context);
        init();
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    public void init() {
        inflate(getContext(), R.layout.my_view, this);
        setOrientation(VERTICAL);
        textView = (TextView) findViewById(R.id.text_view);
    }

    public MyView setContent(String value) {
        textView.setText(value);

        return this;
    }
}

<强> my_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</merge>

之后,您只需通过Java将其添加到布局中:

cont.addView(new MyView(this).setContent("Value"));

或xml:

<com.path.to.your.view.MyView
    android:id="@+id/my_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>