Ich habe eine App, die eine ListView Book-Objekte hat. Ich klicke auf eine Schaltfläche, die mich zu einer anderen Aktivität (AddBook) bringt, wo ich ein weiteres Buch hinzufügen und die Informationen an die MainActivity zurückgeben kann. Ich kann dieses ursprüngliche Buchobjekt erstellen und es der ListView hinzufügen, aber wenn ich versuche, ein zweites Buch hinzuzufügen, indem ich auf die Schaltfläche Hinzufügen (MainActivity) klicke und AddBook erneut durchführe, wenn ich zu MainActivity zurückkehre, wird das erste Buch ersetzt durch den zweiten Eintrag. Ich denke, ich brauche eine Schleife oder Konditional, aber ich kann es nicht herausfinden.Artikel zu Array-Liste von einer anderen Absicht hinzufügen
ich hinzugefügt, um die if-Anweisung in Zeile 94, da das Objekt automatisch hinzugefügt werden würde, bevor ich in die Felder auf der AddBook Aktivität
package com.the93rd.android.bookcatalog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
Button mAddBook;
public ArrayList<Book> books;
public ListView listView;
public BookListViewAdapter bookAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Array List of Book objects
books = new ArrayList<>();
books.add(new Book("J.K. Rolling", "Harry Potter and The Sorcerers Stone", 8,
"0439708184", "Yes"));
books.add(new Book("Eoin Colfer", "The Artic Accident", 5,
"1423124529", "Yes"));
books.add(new Book("George S. Clason", "The Richest Man in Babylon", 9,
"1505339111", "No"));
books.add(new Book("Khaled Hosseini", "The Kite Runner", 10,
"159463193X", "Yes"));
books.add(new Book("Daniel Keyes", "Flowers For Algernon", 8,
"0156030306", "No"));
listView = (ListView) findViewById(R.id.list);
bookAdapter = new BookListViewAdapter(this, books);
listView.setAdapter(bookAdapter);
//Open BookDetails Activity to Display more book information
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Get ArrayList element
Book book = books.get(position);
//Get fields for current Book element
String passAuthor = book.getAuthor();
String passTitle = book.getTitle();
int passRating = book.getRating();
String passIsbn = book.getIsbn();
String passSeries = book.getSeries();
Toast.makeText(MainActivity.this, book.getAuthor(), Toast.LENGTH_SHORT).show();
//Pass Extras for Book element to BookDetails Activity
Intent openDetail = new Intent(MainActivity.this, BookDetails.class);
openDetail.putExtra("Author", passAuthor);
openDetail.putExtra("Title", passTitle);
openDetail.putExtra("Rating", passRating);
openDetail.putExtra("Isbn", passIsbn);
openDetail.putExtra("Series", passSeries);
startActivity(openDetail);
}
});
//Open AddBook Activity
mAddBook = (Button) findViewById(R.id.add_book);
mAddBook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent addBook = new Intent(MainActivity.this, AddBook.class);
startActivity(addBook);
}
});
//Get extras from AddBook Activity
Intent intent = getIntent();
String addAuthor = intent.getStringExtra("addAuthor");
String addTitle = intent.getStringExtra("addTitle");
String addRating = intent.getStringExtra("addRating");
String addIsbn = intent.getStringExtra("addIsbn");
String addSeries = intent.getStringExtra("addSeries");
if(addAuthor != null){
//Add variables from AddBook activity to new Book object
books.add(new Book(addAuthor, addTitle, 5, addIsbn, addSeries));
bookAdapter.notifyDataSetChanged();
}
}
}
Vielen Dank, dass ich getan habe, was Sie gesagt haben und das Ergebnis, das ich gesucht habe – Sav