2016-04-01 6 views
0

Dies ist meine allererste Frage also gehen Sie einfach auf mich :) Ich bin neu bei Android, und ich versuche, eine einfache Liste zu machen. In der ersten Aktivität kann der Benutzer Daten eingeben, die als Liste auf der zweiten Aktivität angezeigt werden sollen.Eine ArrayList an eine andere Aktivität übergeben, aber das Ergebnis nicht anzeigen?

Ich verwende Intents, um die Daten von einer Aktivität an eine andere zu übergeben, aber ich weiß, dass mir etwas Entscheidendes in meiner ClassB-Aktivität fehlt, da nichts angezeigt wird.

Hier ist mein Haupt-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); 
      } 
     }); 

und für meine zweite Aktivität:

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); 
    } 
} 

Alle Hinweise oder Ratschläge wäre sehr zu begrüßen.

Vielen Dank.

Antwort

1

Sie fügen die Elemente in arr niemals zu ArrayAdapter hinzu. Verwenden Sie die drei Argument Konstruktor für ArrayAdapter wie unter denen die Elemente hinzufügen:

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

Ja, das funktioniert perfekt. Ich habe nicht gemerkt, dass ich die Verabredung verpasst hatte. Wahrscheinlich starrte ich es zu lange an. Vielen Dank George Mulligan :) – Woowoo

1

In KlasseA versuchen Sie dies:

i.putStringArrayListExtra(EXTRA_NOTE, arr); 

oder in ClassB dies versuchen:

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

Sie haben den gleichen Schlüssel verwenden, um die Werte zu setzen und zu erhalten.

Übrigens, warum ordnen Sie "Arr" zweimal Werte zu?

+0

Dank für das ARP immer wieder. Ja, du hast Recht, ich habe zweimal arr erklärt. Ich habe das Duplikat herausgenommen und es etwas aufgeräumt. Ich habe beide Methoden oben versucht, aber es scheint nicht für mich zu funktionieren. Es gibt keine Fehler, aber es wird immer noch nicht angezeigt. Die untenstehende Methode erledigt den Job, danke nochmal. – Woowoo

0
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); 
Verwandte Themen