繁体   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