简体   繁体   中英

Passing an ArrayList to another Activity but not displaying result?

this is my very first question so go easy on me :) I am new to android, and I am trying to make a simple list. On the first Activity the user can enter data, which should display as a list on the second Activity.

I am using Intents to pass the data from one Activity to another, but I know I am missing something crucial in my ClassB Activity as nothing displays.

Here is my main code:

public class ClassA extends AppCompatActivity {

    EditText note;
    Button saveNoteB, goToNotesB;
    public final static String EXTRA_NOTE = "com.lisa.currys.userlistarray.note";

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

        saveNoteB = (Button) findViewById(R.id.saveNote);
        saveNoteB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    Intent i = new Intent(ClassA.this, ClassB.class);
                    note = (EditText) findViewById(R.id.note);
                    String userInput = note.getText().toString();

                    ArrayList<String> arr = new ArrayList<String>();
                    arr.add(userInput);

                    i.putStringArrayListExtra("note", arr);
                    startActivity(i);
            }
        });

and for my second activity:

public class ClassB extends AppCompatActivity {

public static android.widget.ListView displayNotes;
ArrayList<String> arr = new ArrayList<String>();

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

    arr = getIntent().getExtras().getStringArrayList(ClassA.EXTRA_NOTE);
    displayNotes = (ListView)findViewById(R.id.listView);
    Intent i = getIntent();
    arr = i.getStringArrayListExtra("note");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1);
    displayNotes.setAdapter(adapter);
   }
}

Any pointers or advice would be most welcome.

Thank you.

In ClassA try this:

i.putStringArrayListExtra(EXTRA_NOTE, arr);

or in ClassB try this:

arr = getIntent().getExtras().getStringArrayList("note");

You have to use the same key to set and get the values.

By the way, why are you assign values to "arr" two times?

You are never actually adding the elements in arr to the ArrayAdapter . Use the three argument constructor for ArrayAdapter like below which will add the elements:

ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);
    Try this 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1);

     Above statement you are pass the context and layout in which your data
     display but you are not give the data which is store 
     in your **arr** arraylist so you not show anything.

  replace this statement to 

    ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);

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