I have have 2 activities "MainActivity", "Main2Activity" and 2 classes "User", "UserAdapter". What I want actually want is explained below.
First of all I want to insert several data from "MainActivity" (If I insert "name" and "email" 5 times then I've inserted 5 data) by clicking "submit" button.
Then I want to show all data as listview in "Main2Activity" which is another activity.
But I can only see the last data I've inserted while I inserted several data.
I mean if I insert 1st data(John, john123@gmail.com), 2nd data(cherry, cherry45@gmail.com) by clicking submit button I can see all data in same activity which is "MainActivity" and can only see the last data (cherry, cherry45@gmail.com) in second activity which is "Main2Activity".
Can anyone help me to pass entire arraylist from MainActivity to display in listview to Main2Activity? My all codes are given below.
===============MainActivity.java=================
package com.andromet.customlistview;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;`
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
EditText editName, editEmail;
String name, email;
Intent intent;
UserAdapter adapter;
ListView listView;
ArrayList<User> users = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editName = findViewById(R.id.name);
editEmail = findViewById(R.id.email);
listView = findViewById(R.id.listView);
adapter = new UserAdapter(this, users);
}
public void submit(View view) {
name = editName.getText().toString();
email = editEmail.getText().toString();
listView.setAdapter(adapter);
users.add(new User(name,email));
intent = new Intent(MainActivity.this, Main2Activity.class);
intent.putExtra("name", name);
intent.putExtra("email", email);
adapter.notifyDataSetChanged();
Toast.makeText(this,"Total Items: " +users.size(), Toast.LENGTH_SHORT).show();
}
public void onListClicked(View view) {
//intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
}
===============Main2Activity.java================
package com.andromet.customlistview;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class Main2Activity extends AppCompatActivity {
ListView listView;
UserAdapter adapter;
String name, email;
ArrayList<User> users = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
listView = findViewById(R.id.listView2);
adapter = new UserAdapter(this, users);
Bundle bundle = getIntent().getExtras();
name = bundle.getString("name");
email = bundle.getString("email");
listView.setAdapter(adapter);
users.add(new User(name, email));
adapter.notifyDataSetChanged();
Toast.makeText(this,"Total Items: " +users.size(), Toast.LENGTH_SHORT).show();
}
}
==================User.java=================
package com.andromet.customlistview;
public class User {
private String name;
private String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String emial) {
this.email = emial;
}
}
===============UserAdapter.java=================
package com.andromet.customlistview;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class UserAdapter extends ArrayAdapter<User> {
private Context context;
private ArrayList<User> users;
public UserAdapter(Context context, ArrayList<User> users){
super(context, 0, users);
this.users = users;
this.context = context;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View row = convertView;
if (row == null){
row = LayoutInflater.from(context).inflate(R.layout.mylist,parent,false);
}
User user = users.get(position);
if (row != null){
TextView textViewName = row.findViewById(R.id.view_name);
TextView textViewEmail = row.findViewById(R.id.view_email);
textViewName.setText(user.getName());
textViewEmail.setText(user.getEmail());
}
return row;
}
}
This is what I can see in Main2Activity
This is what I can see in MainActivity and I want to pass this entire array to Main2Activity