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スピナーとテキストビューの別のインスタンスを追加して、ユーザーが好きなだけタスクを追加できるようにします。

選択した各アイテム/タスクを他の個別のメソッドに関連付ける必要があるため、複数選択のlistViewは必要ありません。

誰か助けてくれませんか?

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

これを試して

my_form.xml1-これに編集

<?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 に答える