【问题标题】:Send data from edittext to listview将数据从edittext发送到listview
【发布时间】:2014-09-24 17:24:21
【问题描述】:

我创建了两个ActivitiesMainActivityListActivity),在MainActivity 中,我有一个EditText 和一个保存按钮。

ListActivity,我有一个ListView

我想保存EditText中写入的值/数据/字符串文本,并将其发送给ListView中的另一个Activity

这就是它现在的样子,但我想我知道我缺少什么但不知道该怎么做。

主活动。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button save = (Button) findViewById(R.id.btnSave);
        final EditText et = (EditText) findViewById(R.id.editText);

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ListActivity.class);
                intent.putExtra("data", et.getText().toString());
                startActivity(intent);
            }
        });
    }
}

还有 ListActivity。

public class ListActivity extends Activity {    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        ListView lv = (ListView) findViewById(R.id.listView);

        Intent intent = getIntent();

        String data = intent.getStringExtra("data");
    }
}

现在文本保存在数据字符串中,但是如何将其粘贴到ListView

【问题讨论】:

  • 你为什么使用 listview 来处理单个字符串,为什么不使用 textview?
  • 每次我在EditText中写东西时,我都希望它保存在ListView中。如果我使用 TextView,那么保存的旧文本将被新文本替换。那不是我想做的。
  • 您能否在第二个活动中使用静态 ArrayList 并更新它而不是发送消息。希望你能得到我的领导。
  • @DMT82 你得到答案了吗?如果是的话你可以分享请stackoverflow.com/questions/63547010/…

标签: java android android-listview android-edittext


【解决方案1】:

首先你必须创建一个 List Container,最常用的是 ArrayList,然后你必须创建一个 ListAdapater,它将你的数据列表膨胀到你的 ListView 你可以在这里找到一篇很好的文章来解释它:http://windrealm.org/tutorials/android/android-listview.php

【讨论】:

    【解决方案2】:

    这是在 ListView 中添加内容的示例代码:

    listV = (ListView) findViewById(R.id.list);
    
    ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map;
    
    while (...) {
        map = new HashMap<String, String>();
        map.put(stuff);
        listItem.add(map);
    }
    
    s = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.list,
                           new String[] {"title", "desc"}, new int[] {R.id.title, R.id.desc});
    listV.setAdapter(s);
    

    【讨论】:

    • 我第一次误解了这个问题,所以这是新的答案
    【解决方案3】:

    您应该创建ArrayAdapter&lt;String&gt; 对象并将其设置为您的ListView

    List<String> listItems = new ArrayList<String>();
    listItems.add(data);
    String[] items = {};
    items = listItems.toArray(new String[listItems.size()]);
    lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
    

    【讨论】:

      【解决方案4】:

      您可以从TextView 添加您的String,然后将其添加到ArrayAdapter&lt;String&gt;,然后将其设置为AdapterListView

      伪代码:

      TextView textView = (TextView) getViewById(...);
      String s = textView.getText();
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(...);
      adapter.add(s);
      ListView lv = (ListView) getViewById(...)
      lv.setAdapter(adapter)
      

      如果我正确理解您的问题,您想先填充ListView,然后将其发送到另一个活动。如果是这种情况,请不要尝试这样做,只需创建字符串的ArrayList 并传递它,然后在需要它的活动中创建ListView

      编辑:

      要解决您的问题,您可以使用BundleArrayList&lt;String&gt; 发送到您的其他活动,然后只需构建一个类似于我上面的代码的ArrayAdapter 来填充ListView 类似:

       Intent intent = new Intent(getBaseContext(), YourActivity.class);
       intent.putExtra("ArrayListOfStrings", yourArrayList);
      

      那么在你的另一个Activity(YourActivity)中你可以这样做:

       Bundle extras = getIntent().getExtras();
       ArrayList<String> myList = extras.getStringArrayList("ArrayListOfStrings");
      

      【讨论】:

      • 不,你确实理解错了。我有两个不同的活动。其中一个有一个按钮和一个edittext,另一个活动有ListView。当您在 EditText 中写入内容并保存时,它会将文本/数据发送到 ListView 所在的其他 Activity。
      猜你喜欢
      • 2013-07-04
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2018-09-26
      • 2015-02-03
      • 1970-01-01
      相关资源
      最近更新 更多