簡體   English   中英

將數據從edittext發送到listview

[英]Send data from edittext to listview

我創建了兩個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

首先,您必須創建一個列表容器,最常用的是ArrayList,然后您必須創建一個ListAdapater,它將數據列表擴展到ListView,您可以在此處找到一篇很好的文章對其進行解釋: http:// windrealm。組織/教程/安卓/ Android的listview.php

這是在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);

您應該創建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));

您可以從TextView添加您的String ,然后將其添加到ArrayAdapter<String> ,然后將其設置為ListViewAdapter

偽代碼:

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 ,然后將其發送到另一個活動。 如果是這種情況,請不要嘗試執行此操作,只需創建一個String的ArrayList並將其傳遞,然后在需要它的活動中創建ListView

編輯:

為了解決您的問題,您可以使用BundleArrayList<String>發送到您的其他活動,然后只需構建一個與我上面的代碼類似的ArrayAdapter來填充ListView例如:

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

然后,您可以在其他活動(YourActivity)中執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM