作为标题,我想知道是否有一种控制动态添加的视图的最佳方法。 (我们必须继续引用已添加的视图)
有些时候,对于复杂的请求,我们必须在运行时添加视图。这是一些方法。就我而言:
有时我通过listview/recyclerview
使用control view
和list/recycleview adapter
。
其他方式是使用hashmap
。
你还有其他想法吗?以及它是如何工作的?
答案 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"/>