Ich habe ein Testprojekt erstellt, und in diesem Projekt versuche ich eine Listenansicht zu erstellen, die der Benutzer hinzufügen kann, wenn er auf eine Schaltfläche klickt. Die Schaltfläche öffnet eine neue Aktivität mit einem editText und eine weitere Schaltfläche, um zur Listview-Aktivität zurückzukehren, und ein Element sollte hinzugefügt worden sein. Es funktioniert das erste Mal, aber wenn ich ein anderes Item hinzufüge, ersetzt es das alte. Ich habe jetzt eine Weile gesucht, und alle anderen Antworten scheinen mir nicht zu helfen. Danke im Voraus.ListView ersetzt das erste Objekt, anstatt ein neues Objekt hinzuzufügen
public class MainActivity extends Activity {
ListView simpleList;
String input;
ArrayList<Item> listItems =new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simpleList = (ListView) findViewById(R.id.listView);
addData();
MyAdapter myAdapter=new MyAdapter(this,R.layout.row, listItems);
simpleList.setAdapter(myAdapter);
}
public void addData(){
Bundle extras = getIntent().getExtras();
if (extras != null) {
input = extras.getString("Homework");
listItems.add(new Item(input, input, input));
}
}
public void toInput(View view){
Intent intent = new Intent(this, inputScreen.class);
startActivity(intent);
}}
Dies ist meine Haupttätigkeit, der Adapter ist ein benutzerdefinierter Adapter, der in dieser Klasse hergestellt wird.
public class MyAdapter extends ArrayAdapter<Item> {
ArrayList<Item> listItems = new ArrayList<>();
public MyAdapter(Context context, int textViewResourceId, ArrayList<Item> objects){
super(context, textViewResourceId, objects);
listItems = objects;
}
public int getCount(){
return super.getCount();
}
public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.row, null);
TextView textView = (TextView) v.findViewById(R.id.homeworkDisplay);
TextView textView2 = (TextView) v.findViewById(R.id.dueDisplay);
TextView textView3 = (TextView) v.findViewById(R.id.classDisplay);
textView.setText(listItems.get(position).getHomework());
textView2.setText(listItems.get(position).getDate());
textView3.setText(listItems.get(position).getClasses());
return v;
}}
Die Zeichenfolge, die zur Listenansicht hinzugefügt wird, wird von der anderen Tätigkeit gesendet, die sie von einem editText bekommt, hier ist es Klasse
public class inputScreen extends Activity{
EditText userInput;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input_screen);
userInput = (EditText) findViewById(R.id.editText);
}
public void sendInfo(View view){
Intent goingBack = new Intent(this,MainActivity.class);
goingBack.putExtra("Homework", userInput.getText().toString());
startActivity(goingBack);
}}
Ich kenne eine Menge Code gibt es, Sie don Ich muss das alles durchgehen, da ich mir sicher bin, dass das Problem in MainActivity liegt. Ich habe eine andere Klasse namens Items, die Hausaufgaben zurückgibt. Vielen Dank!
Danke Kumpel, ich werde das überprüfen und sehen, ob es funktioniert –
Hey, ich habe es dank dir herausgefunden. Prost, Mann! –
froh, das zu hören, ~~ du bist willkommen –