繁体   English   中英

在 ListView 上显示来自 EditText 的文本

[英]Show the text from EditText on ListView

我的项目中有一个按钮、一个editText 和一个listView。 function 我想实现的是,当我在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();
    }
}

以下是您想要的工作代码。

第 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("");
    }
}

试试这个方法

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

错误error: incompatible types: String cannot be converted to String[]是因为str = editText.getText().toString();
在这里,您试图错误地将字符串分配给字符串数组

您需要做的是使用String[]ArrayList ,因为它比String[]动态且高效

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

在您的情况下,您使用的是大小为 10 的String[]数组。现在,如果您想从ListView中的EditText添加字符串,则必须添加如下所示。

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 数组设置为字符串。 但是如果要在字符串数组中添加字符串,则必须为数组指定 position。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM