Показать текст из EditText в ListView - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть кнопка, editText и listView в моем проекте.Функция, которую я хочу реализовать, заключается в том, что, когда я ввожу некоторые слова в editText и нажимаю кнопку, слова, которые я набрал, должны быть в listView.

Вот мой код.После отладки он показывает error: incompatible types: String cannot be converted to String[]

    public class MainActivity extends AppCompatActivity {
    private String[] str = new String[10];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView = (ListView) findViewById(R.id.list_view);  //build listview
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str);
        listView.setAdapter(adapter);
    }


    public void sendMessage(View view){
        EditText editText = (EditText) findViewById(R.id.editText);
        str = editText.getText().toString();
    }
}

Ответы [ 4 ]

2 голосов
/ 25 сентября 2019

Ниже приведен рабочий код для того, что вы хотите.

шаг 1 -> Добавить данные в текст редактирования

шаг 2 -> нажмите кнопку подтверждения

шаг 3 -> Добавленные данные будут отображаться в списке

public class MainActivity extends AppCompatActivity {

    private List<String> str = new ArrayList<>();
    private ArrayAdapter adapter;

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

        ListView listView = findViewById(R.id.list_view);  //build listview
        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str);
        listView.setAdapter(adapter);
    }

    public void sendMessage(View view) {
        EditText editText = findViewById(R.id.editText);
        str.add(editText.getText().toString());
        adapter.notifyDataSetChanged();
        editText.setText("");
    }
}
1 голос
/ 25 сентября 2019

В вашем случае вы используете массив String[] с размером 10. Теперь, если вы хотите добавить строку из EditText в ListView, тогда вы должны добавить, как показано ниже.

public class MainActivity extends AppCompatActivity {
    private String[] str = new String[10];
    int count = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView = (ListView) findViewById(R.id.list_view);  //build listview
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str);
        listView.setAdapter(adapter);
    }


    public void sendMessage(View view){
        EditText editText = (EditText) findViewById(R.id.editText);
        if(count < str.length){
             str[count] = editText.getText().toString();
             count++;
        }
    }
}

Почему вы получаете ошибку?

Вы получаете ошибку, потому что вы установили массив String как строку.Но если вы хотите добавить строку в массив строк, вам нужно указать позицию для массива.

1 голос
/ 25 сентября 2019

ошибка error: incompatible types: String cannot be converted to String[] из-за str = editText.getText().toString();
здесь вы пытаетесь назначить строку в массив строк неправильно

, что вам нужно сделать, это использовать ArrayList вместо String[] вместоон динамичен и эффективнее, чем String[]

и

с str = editText.getText().toString(); до arrayList.add(ditText.getText().toString());

1 голос
/ 25 сентября 2019

Попробуй так

 public class MainActivity extends AppCompatActivity {
    private List<String> str = new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView = (ListView) findViewById(R.id.list_view);  //build listview
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str);
        listView.setAdapter(adapter);
    }


    public void sendMessage(View view){
        EditText editText = (EditText) findViewById(R.id.editText);
        String str1 = editText.getText().toString();
          str.add(str1);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...