如何在运行时添加相同的视图
how to add same view on runtime
我想设计这样的视图
同一视图重复多次,即当点击 add item 时,它应该添加相同的视图(在开始时应该只有一行)。我不明白如何制作,似乎我无法使用 RecyclerView 制作这样的视图。也许我可以使用 LayoutInflater 制作一个。但是如何?
是的,您可以使用 Layout Inflator 添加它:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
在Activity中:
LinearLayout linearLayout = findViewById(R.id.main_container);
LinearLayout childLayout = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.child_layout, null, false);
childLayout.setTag(linearLayout.getChildCount() + 1); // set some Id
linearLayout.addView(childLayout); // Adding for first time
for(int i=0; i<5; i++) {
childLayout.setTag(linearLayout.getChildCount() + 1);
linearLayout.addView(childLayout); //child_layout is your row layout design
}
要检索:
JSONObject jsonObject = new JSONObject();
for (int i = 0; i < linearLayout.getChildCount(); i++) {
View childLayout = linearLayout.getChildAt(i);
if (childLayout instanceof LinearLayout) {
//get SubViews of you child_layout and get thos value
// for id int id = (int) childLayout.getTag()
//add the values to jsonObject
}
}
好吧,创建一个模型class:
public class Product{
int product_id;
int product_size;
int product_qty;
//provide all the getter setters and constructor
public Product(int product_id,int product_size,int product_qty){
this.product_id = product_id;
this.product_size = product_size;
this.product_qty = product_qty;
}
}
现在在 Recyclerview 适配器中使用这个数组列表:
ArrayList<Product> productList = new ArrayList<Product>
点击添加按钮时,只需在此列表中添加虚拟值,例如:
productList.add(new Product(0,0,0));
并在您的 recyclerview 适配器中提供您选择的布局
因为以后如果你想设置值,你可以很容易地用位置来完成,同时点击提交你可以只获取整个列表
我想设计这样的视图
同一视图重复多次,即当点击 add item 时,它应该添加相同的视图(在开始时应该只有一行)。我不明白如何制作,似乎我无法使用 RecyclerView 制作这样的视图。也许我可以使用 LayoutInflater 制作一个。但是如何?
是的,您可以使用 Layout Inflator 添加它:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
在Activity中:
LinearLayout linearLayout = findViewById(R.id.main_container);
LinearLayout childLayout = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.child_layout, null, false);
childLayout.setTag(linearLayout.getChildCount() + 1); // set some Id
linearLayout.addView(childLayout); // Adding for first time
for(int i=0; i<5; i++) {
childLayout.setTag(linearLayout.getChildCount() + 1);
linearLayout.addView(childLayout); //child_layout is your row layout design
}
要检索:
JSONObject jsonObject = new JSONObject();
for (int i = 0; i < linearLayout.getChildCount(); i++) {
View childLayout = linearLayout.getChildAt(i);
if (childLayout instanceof LinearLayout) {
//get SubViews of you child_layout and get thos value
// for id int id = (int) childLayout.getTag()
//add the values to jsonObject
}
}
好吧,创建一个模型class:
public class Product{
int product_id;
int product_size;
int product_qty;
//provide all the getter setters and constructor
public Product(int product_id,int product_size,int product_qty){
this.product_id = product_id;
this.product_size = product_size;
this.product_qty = product_qty;
}
}
现在在 Recyclerview 适配器中使用这个数组列表:
ArrayList<Product> productList = new ArrayList<Product>
点击添加按钮时,只需在此列表中添加虚拟值,例如:
productList.add(new Product(0,0,0));
并在您的 recyclerview 适配器中提供您选择的布局
因为以后如果你想设置值,你可以很容易地用位置来完成,同时点击提交你可以只获取整个列表