【问题标题】:How to delete layout when button pressed按下按钮时如何删除布局
【发布时间】:2020-11-08 19:05:47
【问题描述】:

我是 android 新手,请帮我找到适合这种情况的解决方案。

请参考 UI(图片链接)。如果用户单击添加按钮新列表视图应该膨胀,我正在尝试这样做。当用户按下特定列表视图上的删除按钮时,整行都应该被删除。

问题1:当按下删除时,错误的行被删除了。

问题 2:当用户按下开始组 id 时,所有添加的行的值都应该保存在 arraylist 中。

问题 3:我必须在添加和删除中应用限制.. 用户不能添加超过 20 行,并且至少有一行可用,即用户不能删除所有行。

用户界面看起来像:App UI

代码:每行的XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:paddingTop="20dp"
        android:paddingBottom="20dp"
        android:text="1" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="time"/>


    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="delete" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1" />


</LinearLayout>

UI部分的XML代码

           <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/leanierLayout_test"
                android:orientation="vertical">
            </LinearLayout>

            <Button
                android:id="@+id/button1"
                android:layout_gravity="right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Add"
                />

OnCreate 方法:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ap_auto_start_test);
        ArrayAdapter<String> adapter2;
        adapter2 = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,groupId);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        Button add = findViewById(R.id.button1);
        final LinearLayout data = (LinearLayout) findViewById(R.id.leanierLayout_test);

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    LayoutInflater li = LayoutInflater.from(getApplicationContext());
                    final View view = li.inflate(R.layout.tryandtest,null);
                    data.addView(view);
                    Spinner s = view.findViewById(R.id.spinner);
                    s.setAdapter(adapter2);
                    Button delete= findViewById(R.id.button2);
                    delete.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            data.removeViewInLayout(view);
                        }
                    });

                }catch (Exception e){
                    e.printStackTrace();
                    Log.d("infilate exception", e.toString());
                }
            }
        });
    }

【问题讨论】:

  • 为什么不用recyclerView???
  • 使用 recyclerView 实现这个更简单吗?
  • 所有问题(问题:1,2,3)是否都使用 recyclerView 提前解决了?
  • 当然可以。
  • 如果您需要更多信息,请务必告诉我。

标签: java android android-layout arraylist android-linearlayout


【解决方案1】:

您可以查看在 recyclerview 上执行 CRUD 功能。停止使用列表视图。效率很低。

以下链接应为您提供有关如何实现功能的非常清晰的指导。

Recycler view CRUD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多