每次单击TextView时都会无限添加动态CheckBox

时间:2018-01-19 06:59:10

标签: android xml checkbox android-linearlayout textview

我是Android Studio / Development的新手,但不是编程本身。我正在努力学习语法(因为我认为这是我的问题)但我无法在这里或谷歌上找到任何解决方案。我有第二个名为FilterActivity的活动。 FilterActivity目前有2个TextView。两者都创建动态CheckBoxes。现在,我只有一个这样做,所以我可以在我去另一个之前得到一个。这是问题,我点击TextView来获取动态创建的CheckBox,它显示完全正常。但是,再次单击它只会添加相同的值,直到它看起来通过xml完全填充父级。

无论我搜索什么,我做什么,它都完全相同。我知道,我没有为onCheckedChanged做任何事情,但我以前也没有,但它也没有用。那么问题,我是不是应该使用LinearLayout并做一个类似的容器?复选框(500+)将有一个相当大的数据库,所以我想我必须在某些时候实现ScrollView。另外,如果LinearLayout是正确的方法,我做错了什么?我只是完全旋转,我知道它不应该这么难。

感谢任何提供反馈的人!

这是XML:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="xxx.AppEx.FilterActivity"
    tools:layout_editor_absoluteY="81dp"
    tools:showIn="@layout/activity_filter">

    <View
        android:id="@+id/firstView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerHorizontal="true" />

    <View
        android:id="@+id/secondView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerVertical="true"/>

    <TextView
        android:id="@+id/AllTextView"
        android:clickable="true"
        android:text="All"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:height="50dp"
        android:layout_toLeftOf="@id/firstView"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:textStyle="bold"
        android:textAllCaps="true"/>

    <TextView
        android:id="@+id/DisTextView"
        android:clickable="true"
        android:text="Dis"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:height="50dp"
        android:layout_toRightOf="@+id/firstView"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:textStyle="bold"
        android:textAllCaps="true"/>

    <LinearLayout
        android:id="@+id/CheckBoxLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@id/secondView">
    </LinearLayout>
</RelativeLayout>

这是主要代码:

    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.widget.CheckBox;
    import android.widget.CompoundButton;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.content.Intent;

    public class FilterActivity extends AppCompatActivity implements 
    CompoundButton.OnCheckedChangeListener {
    LinearLayout CheckBoxLayout;
    CheckBox checkBox;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter);
        CheckBoxLayout = (LinearLayout) findViewById(R.id.CheckBoxLayout);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        final TextView AllTextView = (TextView) findViewById(R.id.AllTextView);
        AllTextView.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                AllTextView.setBackgroundColor(Color.BLUE);
                onAllClick();
            }
        });

        TextView DisTextView = (TextView) findViewById(R.id.DisTextView);
        DisTextView.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //onAllClick();
            }
        });
    }

    public void onAllClick()
    {
        Intent intent = getIntent();
        dummy();
    }

    public void dummy()
    {
        String[] array = new String[]
                {
                        "Rice", "Beans"
                };

        LinearLayout CheckBoxLayout = (LinearLayout)findViewById(R.id.CheckBoxLayout);
        for (int i = 0; i < array.length; i++)
        {
            CheckBox checkBox = new CheckBox(this);
            checkBox.setText(array[i]);
            CheckBoxLayout.addView(checkBox);
        }
    }

    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

    }
    }

0 个答案:

没有答案