【问题标题】:Add the values of a text field into an array将文本字段的值添加到数组中
【发布时间】:2014-06-16 17:04:06
【问题描述】:

我需要将输入到文本字段中的值添加到数组列表中。

我是这样实现的:

public class MainActivity extends ActionBarActivity {
 Spinner spinner1,spinner2,spinner3;
 Button add;
 EditText subject;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 // Spinner element
   spinner1 = (Spinner) findViewById(R.id.spinner1);
   spinner2 = (Spinner) findViewById(R.id.spinner2);
   spinner3 = (Spinner) findViewById(R.id.spinner3);
   add = (Button) findViewById(R.id.button1);
   subject = (EditText) findViewById(R.id.editText1);

// Spinner click listener

   //spinner2.setOnItemSelectedListener(this);
   //spinner3.setOnItemSelectedListener(this);
   spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

       @Override
       public void onItemSelected(AdapterView<?> adapter, View v,
               int position, long id) {
           // On selecting a spinner item
           String item = adapter.getItemAtPosition(position).toString();

           // Showing selected spinner item
           Toast.makeText(getApplicationContext(),
                   "Selected Subject : " + item, Toast.LENGTH_LONG).show();
       }

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

       }
   });
   add.setOnClickListener(new OnClickListener() {


     Context context;

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        String content;
         content = subject.getText().toString();
        List list = new ArrayList();
        list.add(content);
        ArrayAdapter dataAdapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_spinner_item, list);

        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinner1.setAdapter(dataAdapter);
            ListIterator it = list.listIterator();

           it.hasNext();

    }
   });



    }
public void addListenerOnSpinnerItemSelection() {
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
            //do something here
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            //optionally do something here
        }
    });
  }

但是,每次我在文本字段中输入新值时,之前的值都会被覆盖。如何使用数组来实现这一点?每次我输入一个值时,我都希望它在下拉菜单中单独保存。

【问题讨论】:

  • 此代码是否放入您的EditText 的afterTextChanged() 中?如果没有,您能告诉我们这些行在您的代码中的位置吗?

标签: java android arrays arraylist android-spinner


【解决方案1】:

之前的值会被覆盖,因为您总是将新的 list 实例添加到 adapter 中。 所以只创建一次列表实例,即在您的活动中全球范围内。即添加这一行

 List list = new ArrayList();

下面到

public class MainActivity extends ActionBarActivity {
 Spinner spinner1,spinner2,spinner3;
 Button add;
 EditText subject;

并在您的onClick 函数中使用以下代码。作为

 String content;
            content = subject.getText().toString();
           list.add(content);
            ArrayAdapter dataAdapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_spinner_item, list);

            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinner1.setAdapter(dataAdapter);

【讨论】:

    【解决方案2】:

    发生这种情况是因为每次你有一个新值时,你都会创建一个新的 ArrayList (List list = new ArrayList();) 然后添加到它。使列表成为成员变量,然后尝试添加它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 2014-03-22
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 2019-03-09
      • 2022-12-16
      • 1970-01-01
      相关资源
      最近更新 更多