2013-03-05 2 views
0

я есть счетчик с 4 значениемкак манипулировать значение в прядильщика андроид

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

Image 1

Первый я выбрать значение «Петак 1»

тогда я выбираю «фотографии дан сохранить »на следующий этап

и значение в настоящее время составляет

Image 2

потому что значение «Петак 1» уже выбрано раньше, поэтому значение «Петак 1» исчезло.

Теперь я выбираю «фотографии дан сохранить» снова

и значение

Image 3

потому, что значение «Петак 1» и «Петак 2» уже выбрана раньше, так что значение " Петак 1 "и" Петак 2 "исчез.

Вопрос заключается в том, как манипулировать значением spinner, когда я выбираю значение Случайный, Пример: сначала я выбираю «Петак 2»? поэтому значение шоу "Петак 1", "Петак 3", "4 Петак"

вот мой код

  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(); 

      } 

кто-нибудь помочь мне?

EDIT

этот код работает, когда я положил это на кнопку OnClick «Foto данов Сохранить», но ошибки, когда я положил в onActivityResult, линию switch (v.getId()) может switch добавить в onActivityResult?

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(); 
+0

Я думаю, что простой способ - использовать ArrayList вместо Array и использовать 'ArrayList.remove ()', чтобы сначала удалить выбранный элемент из ArrayList, а затем установить его как источник данных для Spinner –

+0

. лучше подходит как отдельный вопрос, так как вы сможете задать более чистый вопрос с вашим текущим кодом и сможете точно определить вашу точную проблему. –

ответ

1

Правильно, что вы хотите делать это с помощью ArrayList держать свои исходные данные, а затем обновлять это, когда вы нажимаете на ваш Фото дан Сохранить кнопку.

Небольшой пример того, как вы могли бы сделать это следующим образом:

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(); 

     } 
    }); 

} 

Это самодостаточный код, так что вы можете скопировать это в новый проект, и он будет работать, как задумано, или вы можете возьмите важные части и примените их к вашему коду.

В основном, мы создаем новый ArrayList и добавляем к нему четыре значения Petak. Затем мы создаем новый SpinnerAdapter, давая ему ArrayList в качестве ссылки.

Когда пользователь нажимает на кнопку Фото, мы удалить выбранный элемент String от основной ArrayList, а затем вызвать notifyDataSetChanged на нашем SpinnerAdapter, чтобы обновить список отображаемых элементов.

+0

см. Мой отредактированный вопрос –

+0

Это было бы лучше подойти как отдельный вопрос, вы могли бы задать более чистый вопрос с вашим текущим кодом и сможете точно определить вашу точную проблему. –

+0

ok спасибо за ваш ответ. –

2

Используйте ArrayList, чтобы решить вашу проблему. Кроме того, следует рассмотреть возможность использования коммутатора вместо группы if.

Good Luck

+0

Можете ли вы дать мне пример кода? @Gbayer –

Смежные вопросы