0

我有一个 XML 文件:my_form.xml(删节以仅显示相关视图)。微调器由 strings.xml 中的字符串数组填充

<?xml version="1.0" encoding="utf-8"?>
 <ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:orientation="vertical" >
<LinearLayout
        android:id="@+id/LinearLayout01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >



    <Spinner
        android:id="@+id/task"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/task_array"
        android:prompt="@string/task" />

    <TextView android:id="@+id/addTask"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"               
       android:text="Add another task"
       android:onClick="onClick"                
       android:clickable="true"/>




</LinearLayout>
</ScrollView> 

所以我有一个显示 xml 微调器和文本视图的活动。

单击文本视图时,我想添加相同 xml 微调器和文本视图的另一个实例,以便人们可以添加任意数量的任务。

我不想要一个多选列表视图,因为我将不得不将每个选择的项目/任务与其他单独的方法相关联

任何人都可以帮助我吗?

public class MyFormActivity extends FragmentActivity implements
                OnClickListener {



        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.my_form);


        final Spinner spinnerTask = (Spinner) findViewById(R.id.task);
                ArrayAdapter<CharSequence> adapter_task = ArrayAdapter
                        .createFromResource(this, R.array.task_array,
                                android.R.layout.simple_spinner_item);
                 spinnerTask.setOnItemSelectedListener(new OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> parent, View v, int pos,
                            long row) {
                        int taskChoice = spinnerTask.getSelectedItemPosition();
                        SharedPreferences sharedPref = getSharedPreferences("FileName",
                                0);
                        SharedPreferences.Editor prefEditor = sharedPref.edit();
                        prefEditor.putInt("taskChoiceSpinner", taskChoice);
                        prefEditor.commit();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) {
                        // TODO Auto-generated method stub

                    }
                });



        }
    View tvAddTask = (TextView) findViewById(R.id.addTask);   
            tvAddTask.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) { 
    //Here I want add another instance of the spinner and text view above
    }

    }
4

2 回答 2

1

尝试这个

1 -my_form.xml对此进行编辑

<?xml version="1.0" encoding="utf-8"?>
 <ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:orientation="vertical" >
    <LinearLayout
            android:id="@+id/LinearLayout01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
    </LinearLayout>
</ScrollView> 

2 - 创建新的布局 xml 文件text_view.xml并将其放入其中

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"               
       android:text="Add another task"                
       android:clickable="true"/>

3 - 创建新的布局 xml 文件spinner_view.xml并将其放入其中

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/task_array"
        android:prompt="@string/task" />

4 - 像这样编辑你的代码

public class MyFormActivity extends FragmentActivity implements  OnClickListener {

        private LinearLayout linear;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.my_form);

            linear = (LinearLayout) findViewById(R.id.LinearLayout01);
            addNewView();
         }    

    private void addNewView(){
        Spinner spinnerTask = View.inflate(this, R.layout.spinner_view, null);
        TextView tvAddTask = View.inflate(this, R.layout.text_view, null); 

        linear.addView(spinnerTask);
        linear.addView(tvAddTask);

                 spinnerTask.setOnItemSelectedListener(new OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> parent, View v, int pos,
                            long row) {
                        int taskChoice = pos;
                        SharedPreferences sharedPref = getSharedPreferences("FileName",
                                0);
                        SharedPreferences.Editor prefEditor = sharedPref.edit();
                        prefEditor.putInt("taskChoiceSpinner", taskChoice);
                        prefEditor.commit();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) {
                        // TODO Auto-generated method stub

                    }
                });

        }

            tvAddTask.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) { 
                //Here I want add another instance of the spinner and text view above
                    addNewView();
                }
        });
}
}

希望这对您有所帮助。

于 2013-03-19T04:34:06.330 回答
0

您可以只编写一个调用微调器的方法,该方法将在 spinner.setOnItemSelectedListener(); 中调用。

于 2013-03-19T04:25:23.647 回答