簡體   English   中英

如何將多個數據從 EditText(Main Activity) 傳遞到 ListView(Another Activity)

[英]How to pass multiple data from EditText(Main Activity) to ListView(Another Activity )

  1. MainActivity 有一個列表視圖和編輯按鈕。 單擊 Edit 按鈕時,它會跳轉到 EditAddItem 頁面。

  2. EditAddItem 類有一個編輯文本和按鈕,每次當我在編輯文本上鍵入一些內容,然后單擊保存時,數據將傳遞給 MainActivity 並顯示在列表視圖中。 有人可以給我一些提示嗎?

     protected void onCreate(Bundle savedInstanceState) {//This is code part of EditAddItem Class super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_add_item); editText = (EditText)findViewById(R.id.editTextTextPersonName); button = (Button) findViewById(R.id.button); cancelButton = (Button) findViewById(R.id.cancel); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(EditAddItem.this, MainActivity.class); intent.putExtra("text", editText.getText().toString()); startActivityForResult(intent, 0); } }); protected void onCreate(Bundle savedInstanceState) {//Code part of MainActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.btnAddItem); listView = (ListView) findViewById(R.id.lstView); addItemEditText = (EditText)findViewById(R.id.editTextTextPersonName); items = new ArrayList<String>(); items.add("item one"); items.add("item two"); itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); listView.setAdapter(itemsAdapter); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openEditItemView(); } });

在第一個活動中覆蓋 onActivityResult() ,您需要正確實現將數據作為來自第二個活動的包傳遞並獲取數據並更新列表並調用通知數據更改。

基本上你的邏輯被切換了。 您應該從 MainActivity startActivityForResult並以 EditAddItemActiity 的結果結束。 然后在 MainActivity 中,您應該覆蓋onActivityResult以獲取從 EditAddItemActivity 傳遞的文本。

你應該做這樣的事情:

主活動.java

    public static final int EDIT_ADD_ITEM_REQUEST = 1;
    public static final String EXTRA_EDIT_ADD_ITEM = "EXTRA_EDIT_ADD_ITEM";

protected void onCreate(Bundle savedInstanceState) {//Code part of MainActivity
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     button = (Button)findViewById(R.id.btnAddItem);
     listView = (ListView) findViewById(R.id.lstView);
     addItemEditText = (EditText)findViewById(R.id.editTextTextPersonName);
     items = new ArrayList<String>();
     items.add("item one");
     items.add("item two");


     itemsAdapter = new ArrayAdapter<String(this,android.R.layout.simple_list_item_1, items);

     listView.setAdapter(itemsAdapter);


     button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(this, EditAddItem.class);
            startActivityForResult(intent, EDIT_ADD_ITEM_RESULT);
        }
    });

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == Activity.RESULT_OK) {
            if(requestCode == EDIT_ADD_ITEM_REQUEST) {
                String name = data.getStringExtra(EXTRA_EDIT_ADD_ITEM);
                updateList(name);
            }
        }
    }

    private void updateList(String name) {
        itemsAdapter.add(name);
    }
}

編輯AddItem.java

protected void onCreate(Bundle savedInstanceState) {//This is code part of EditAddItem Class
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_edit_add_item);
 editText = (EditText)findViewById(R.id.editTextTextPersonName);
 button = (Button) findViewById(R.id.button);
 cancelButton = (Button) findViewById(R.id.cancel);

 button.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
         Intent resultIntent = new Intent();
                resultIntent.putExtra(MainActivity.EXTRA_EDIT_ADD_ITEM, editText.getText().toString());
                setResult(Activity.RESULT_OK, resultIntent);
                finish();

     }

 });

在您的 MainActivity(與您擁有 ListView 的活動相同)-

        editButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, EditAddItem.class);
            startActivityForResult(intent, 0);
        }
    });

// also override below method

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode ==0 && resultCode== RESULT_OK && data != null)
    {

        Sting editTextContent = data.getStringExtra("editText"); // your data
        
        //now put data into your ListView
        items = new ArrayList<String>();
        items.add(editTextContent);
        
        itemsAdapter = new ArrayAdapter<String>(this, 
                    android.R.layout.simple_list_item_1, items);

        listView.setAdapter(itemsAdapter);

    }
}

在您的 EditAddItem 活動(editText 活動)中 -

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(!TextUtils.isEmpty(editText.getText().toString()))
        {
            Intent resultIntent = new Intent();
            resultIntent.putExtra("editText", editText.getText().toString());
            setResult(Activity.RESULT_OK, resultIntent);
            finish();
        } else
        { 
           Toast.makeText(this, "EditText is empty!", Toast.LENGTH_SHORT).show();
        }
    }
});

暫無
暫無

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

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