0

私は4つの値を持つスピナーを持っています

String[] petak = { "Petak 1", "Petak 2", "Petak 3", "Petak 4" };

画像1

まず、「Petak1」の値を選択します

次に、「フォトダンセーブ」を選択して次のステップに進みます

そして今の値は

画像2

値「Petak1」は以前にすでに選択されているため、値「Petak1」は消えます。

今、私は再び「写真ダンセーブ」を選択します

値は

画像3

値「Petak1」と「Petak2」はすでに選択されているため、値「Petak1」と「Petak2」は表示されなくなります。

問題は、値をランダムに選択するときに値スピナーを操作する方法です。例:最初に「Petak2」を選択しますか?したがって、値はshow "Petak 1"、 "Petak 3"、"Petak4"です。

これが私のコードです

            View spinner1 = (Spinner) findViewById(R.id.namapetak);
            String spinnerPetak=((Spinner) spinner1).getSelectedItem().toString();
            if (spinnerPetak == "Petak 1"){
                String[] petak1 = { "Petak 2", "Petak 3", "Petak 4" };
                // buat spinner manual manufaktur
                Spinner spin3 = (Spinner) findViewById(R.id.namapetak);
                //spin3.setOnItemSelectedListener(this);
                ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, petak1);
                aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spin3.setAdapter(aa);
                //update = (Button) findViewById(R.id.update);

                spin3 = (Spinner) findViewById(R.id.namapetak);
                spin3.setOnItemSelectedListener(new OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
                        //Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show();
                    }

                    public void onNothingSelected(AdapterView<?> parent) {

                    }


                    });
                View b = findViewById(R.id.btnPupukQuit);
                b.setVisibility(View.GONE);
                onBackPressed();
                onAttachedToWindow();

            }

            if (spinnerPetak == "Petak 2"){
                String[] petak1 = { "Petak 3", "Petak 4" };
                // buat spinner manual manufaktur
                Spinner spin3 = (Spinner) findViewById(R.id.namapetak);
                //spin3.setOnItemSelectedListener(this);
                ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, petak1);
                aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spin3.setAdapter(aa);
                //update = (Button) findViewById(R.id.update);

                spin3 = (Spinner) findViewById(R.id.namapetak);
                spin3.setOnItemSelectedListener(new OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
                        //Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show();
                    }

                    public void onNothingSelected(AdapterView<?> parent) {

                    }


                    });
                View b = findViewById(R.id.btnPupukQuit);
                b.setVisibility(View.GONE);
                onBackPressed();
                onAttachedToWindow();

            }

            if (spinnerPetak == "Petak 3"){
                String[] petak1 = { "Petak 4" };
                // buat spinner manual manufaktur
                Spinner spin3 = (Spinner) findViewById(R.id.namapetak);
                //spin3.setOnItemSelectedListener(this);
                ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, petak1);
                aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spin3.setAdapter(aa);
                //update = (Button) findViewById(R.id.update);

                spin3 = (Spinner) findViewById(R.id.namapetak);
                spin3.setOnItemSelectedListener(new OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
                        //Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show();
                    }

                    public void onNothingSelected(AdapterView<?> parent) {

                    }


                    });
                View b = findViewById(R.id.btnPupukQuit);
                b.setVisibility(View.GONE);
                onBackPressed();
                onAttachedToWindow();

            }

誰か助けてくれますか?

編集

このコードは、これをボタンonClickに置くと機能しますが、onActivityResultに置くとエラーが発生し、行にonActivityResultを追加switch (v.getId())できますか?switch

String myData = toList.getSelectedItem().toString();
              int position = dataAdapter.getPosition(myData);

              switch (View.getId()) {



              case R.id.btnPetakFoto:

               if(position >= 0){
                dataAdapter.remove(myData);
                dataAdapter.notifyDataSetChanged();
               }
               else {
                Toast.makeText(getBaseContext(), myData + " not in Spinner", Toast.LENGTH_LONG).show();
               }
               break;
               // More buttons go here (if any) ...

              }

            View b = findViewById(R.id.btnPupukQuit);
            b.setVisibility(View.GONE);
            onBackPressed();
            onAttachedToWindow();
4

2 に答える 2

2

ArrayListを使用して問題を解決します。また、一連のifの代わりにswitchの使用を検討する必要があります。

幸運を

于 2013-03-05T19:26:29.453 に答える
1

そうです、あなたがしたいのは、基礎となるデータを保持するためにを使用し、FotodanSaveArrayListボタンをクリックしたときにこれを更新することです。

これを行う方法の小さな例は次のとおりです。

public class MainActivity extends Activity {
ArrayAdapter<String> spinnerAdapter;
Spinner spinner1;
ArrayList<String> petak;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    petak = new ArrayList<String>();
    petak.add("Petak 1");
    petak.add("Petak 2");
    petak.add("Petak 3");
    petak.add("Petak 4");

    spinner1 = (Spinner) findViewById(R.id.spn_petak);
    spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, petak);

    spinner1.setAdapter(spinnerAdapter);

    Button foto = (Button)findViewById(R.id.foto);
    foto.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            petak.remove(spinner1.getSelectedItem().toString());
            spinnerAdapter.notifyDataSetChanged();

        }
    });

}

これは自己完結型のコードであるため、これを新しいプロジェクトにコピーして意図したとおりに機能させるか、重要な部分を取得してコードに適用することができます。

基本的に、私たちが行っているのは、新しいものを作成し、それに4つのPetak値をArrayList追加することです。次に、新しいを作成し、参照として提供します。SpinnerAdapterArrayList

ユーザーが写真Stringボタンをクリックすると、選択したアイテムが下にあるものから削除され、表示されているアイテムのリストを更新するためにがArrayList呼び出さnotifyDataSetChangedれます。SpinnerAdapter

于 2013-03-06T11:04:34.820 に答える