将数据从edittext发送到listview
Posted
技术标签:
【中文标题】将数据从edittext发送到listview【英文标题】:Send data from edittext to listview 【发布时间】:2014-09-24 17:24:21 【问题描述】:我创建了两个Activities
(MainActivity
、ListActivity
),在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 你得到答案了吗?如果是的话你可以分享请***.com/questions/63547010/… 【参考方案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<String>
对象并将其设置为您的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<String>
,然后将其设置为Adapter
的ListView
伪代码:
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
。
编辑:
要解决您的问题,您可以使用Bundle
将ArrayList<String>
发送到您的其他活动,然后只需构建一个类似于我上面的代码的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。以上是关于将数据从edittext发送到listview的主要内容,如果未能解决你的问题,请参考以下文章
Android 开发里面,如何点击Button将EditText里面的内容发送出去并显示在ListView当中?
将arraylist从一个活动发送到另一个活动到listview android [重复]