简体   繁体   中英

Android - Adding item to ListView from another Activity

First of all, I've searched on many other posts and still not found a fix for it.

MainActivity contains a ListView and an ImageButton that takes to AddActivity . This AddActivity has got a EditText ( nameAddInput ) and a Button ( addButton ).

Despite clicking this Button , the ListView in MainActivity remains empty... Don't understand why...

Here is the the code of MainActivity :

public class MainActivity extends AppCompatActivity {

static final int PICK_CONTACT_REQUEST = 0;

private ListView list;
private ArrayAdapter<String> adapter;
private ArrayList<String> arrayList;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list = (ListView) findViewById(R.id.itemsList);
    arrayList = new ArrayList<>();
    adapter = new ArrayAdapter<>(this, R.layout.listview_style1, android.R.id.text1, arrayList);
}

public void onClickAddButton(View view) {
    Intent i = new Intent(MainActivity.this, AddActivity.class);
    startActivityForResult(i, 2);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == RESULT_OK) {
            addNewItem();
        }
    }
}

public void addNewItem() {
    Bundle addNameInfo = getIntent().getExtras();
    if(addNameInfo == null)
        return;
    String nameInput = addNameInfo.getString("nameInput");
    arrayList.add(nameInput);
    list.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

}

In xml file of MainActivity in the ImageButton: android:onClick="onClickAddButton"

The code of AddActivity :

public class AddActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add);
}

public void backToMain(View view) {
    Intent i = new Intent();
    EditText nameAddInput = (EditText) findViewById(R.id.nameAddInput);
    String userNameText = nameAddInput.getText().toString();
    i.putExtra("nameInput", userNameText);
    setResult(RESULT_OK, i);
    finish();
}

}

In xml file of AddActivity in the Button: android:onClick="backToMain"

Hope someone can help!! Thank you in advance!!

getIntent() returns you the intent that launched MainActivity, not the one you set in backInMain

Try the "data" variable passed to you in onActivityResult?

Also change to

startActivityForResult(i, PICK_CONTACT_REQUEST);

I'd also suggest you rename that variable 😉

只需在onCreate中设置适配器,然后在addNewItem方法中调用notifyDataSetChanged即可。

the resulting value is returned in the Intent data -Parameter of the onActivityResult function, not in the intent-member of the mainActivity.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent    data) {
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == RESULT_OK) {
            addNewItem(data.getExtras().getString("nameInput");
       }
   }
}
...
public void addNewItem(String newItem)
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM