按下按钮时如何删除布局

Posted

技术标签:

【中文标题】按下按钮时如何删除布局【英文标题】: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_
    android:layout_>

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

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


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

    <Spinner
        android:id="@+id/spinner"
        android:layout_
        android:layout_
        android:layout_weight="1" />


</LinearLayout>

UI部分的XML代码

           <LinearLayout
                android:layout_
                android:layout_
                android:id="@+id/leanierLayout_test"
                android:orientation="vertical">
            </LinearLayout>

            <Button
                android:id="@+id/button1"
                android:layout_gravity="right"
                android:layout_
                android:layout_
                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 提前解决了? 当然可以。 如果您需要更多信息,请务必告诉我。 【参考方案1】:

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

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

Recycler view CRUD

【讨论】:

以上是关于按下按钮时如何删除布局的主要内容,如果未能解决你的问题,请参考以下文章

KIVY:如何清除所有子项的网格布局

按下后退按钮时如何删除堆栈中的所有活动

按下按钮后如何延迟删除课程?

如何通过选择一行并按下删除按钮来删除 MovieClip?

如何在按钮按下时删除子/精灵?

C#如何在按下w,s,a,d按钮时删除'ding'系统声音