如何在spinner android中操纵值

时间:2013-03-05 18:51:54

标签: android android-spinner

我有一个带有4个值的微调器

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

Image 1

首先我选择值“Petak 1”

然后我选择“foto dan save”到下一步

,现在的值是

Image 2

因为之前已经选择了值“Petak 1”,所以值“Petak 1”消失了。

现在我再次选择“foto dan save”

,值为

Image 3

因为之前已经选择了值“Petak 1”和“Petak 2”,所以值“Petak 1”和“Petak 2”消失了。

问题是当我选择值随机时如何操纵值微调器,例如:我选择“Petak 2”首先?因此值显示为“Petak 1”,“Petak 3”,“Petak 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();

            }

有人帮助我吗?

修改

这个代码工作时,我把它放在按钮onClick“Foto dan Save”,但是当我放到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();

2 个答案:

答案 0 :(得分:2)

使用ArrayList解决您的问题,您还应该考虑使用switch而不是一堆if。

祝你好运

答案 1 :(得分:1)

是的,您要做的是使用ArrayList来保存基础数据,然后在单击 Foto dan Save 按钮时更新此数据。

如何执行此操作的一个小示例如下:

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

当用户点击 foto 按钮时,我们会从基础String中删除所选项ArrayList,然后在{{1}上调用notifyDataSetChanged为了更新显示的项目列表。