2017-01-31 4 views
0

Я преподаю Java/XML с помощью Android Studio и буду признателен за помощь. Я пытаюсь создать приложение списка покупок, и у меня возникла проблема с именами массивов строк внутри массива. Я настроил ArrayList, но я хотел бы заполнить ArrayList строковыми массивами. При попытке добавить строку ввода (от пользователя), я получаю сообщение об ошибке:Java getText(). ToString() для именования массива String

надстройки (java.lang.String []) в списке не может быть применен
к (java.lang.String)

Вот мой код:

public class ShoppingLists extends AppCompatActivity { 

    /* Create ArrayList (from List) and Adapter for the ListView */ 
    List<String[]> shoppingLists = null; 
    ArrayAdapter<String> adapter = null; 
    ListView lv = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_shopping_lists); 

     /* Create main array */ 
     shoppingLists = new ArrayList<>(); 

     /* Set view style with adapter */ 
     adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, shoppingLists); 
     lv = (ListView) findViewById(R.id.shoppingListView); 
     lv.setAdapter(adapter); 
    } 

    /* Create a menu. */ 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.shopping_menu, menu); 
     return true; 
    } 

    /* Create actions for menu button presses */ 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     /* Determine which menu button is pressed */ 
     switch (item.getItemId()) { 
      case R.id.action_add: 
       /* Create an alert dialog for user input */ 
       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setTitle(getString(R.string.add_list)); 
       final EditText input= new EditText(this); 
       builder.setView(input); 

       /* If 'OK' is pressed, enter user input as new object into shoppingLists array */ 
       builder.setPositiveButton(getString(R.string.ok_button), new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         /* Convert user input to string and add it to list */ 
         shoppingLists.add(input.getText().toString()); 
         /* Update adapter with new object to make visible */ 
         lv.setAdapter(adapter); 
        } 
       }); 
       builder.setNegativeButton(getString(R.string.cancel_button), new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         /* Exit dialog box without adding new object */ 
         dialog.cancel(); 
        } 
       }); 
       builder.show(); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

ошибка указывается здесь:

shoppingLists.add(input.getText().toString()); 

У меня такое чувство, что мне не хватает чего-то простого, но я не могу понять.

Заранее благодарю вас за помощь!

+5

У вас есть список String []. Вы пытаетесь добавить строку. Скорее всего, [] является istake, и вы хотели сделать списки покупок списком

ответ

2

List<String[]> shoppingLists = null; должно быть

List<String> shoppingLists = null; 
1

Существует два решения

1- изменение List<String[]> shoppingLists = null; к List<String> shoppingLists = null;

2- Сначала добавьте свой входной текст в массив строк, а затем добавьте этот строковый массив в список, как показано ниже: String[] strArray = {input.getText().toString()}; shoppingLists.add(strArray);

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