将数据添加到数组以在另一个活动中列出

问题描述:

下面是我用于我的android应用程序开发的3个java类。我想在AddActivity中添加学生数据(姓名和电话号码),单击“添加”后将其存储在MainActivity页面中。我对此进行了研究并尝试使用一个数组,但我对如何让代码将AddActivity中的数据发送到MainActivity页面的逻辑非常困惑。任何人都可以给我一个关于如何解决这个问题的指导,如果你能以另一种方式让我看看,我会非常感激。我希望数据在MainActivity中以ListView格式存储,然后在AddActivity页面中单击每个“添加”后。希望有人能够引导我这样做。谢谢。将数据添加到数组以在另一个活动中列出

MainActivity.java - https://jsfiddle.net/eb1fprnn/

public class MainActivity extends AppCompatActivity { 
ListView listView; 
Button addStudent; 
ArrayList<Student> students = new ArrayList<Student>(); 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    add(); 
} 



public void add() { 
    Student student; 
    addStudent = (Button) findViewById(R.id.add); 
    addStudent.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this, AddActivity.class); 
      startActivity(intent); 
     } 
    }); 
} 
} 

AddActivity.java - https://jsfiddle.net/40k5mas2/

public class AddActivity extends AppCompatActivity { 
EditText name, phone; 
Button add; 
int FphoneNumber; 
String Fname; 
ArrayList<Student> students; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
Intent intent = getIntent(); 
students = (ArrayList<Student>) getIntent().getSerializableExtra("AddNewStudent"); 
setContentView(R.layout.activity_add); 
edit(); 
addStudent(); 
} 
public void edit() { 
name = (EditText) findViewById(R.id.StudentName); 
phone = (EditText) findViewById(R.id.phone); 
final Button addStudent = (Button) findViewById(R.id.AddStudent); 

name.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     addStudent.setEnabled(!name.getText().toString().trim().isEmpty()); 
     Fname = name.getText().toString(); 

     String phoneNumber = phone.getText().toString(); 
     FphoneNumber = Integer.parseInt(phoneNumber); 
    } 
    @Override 
    public void afterTextChanged(Editable s) { 
    } 
}); 
} 

public void addStudent() { 

add = (Button) findViewById(R.id.AddStudent); 

add.setOnClickListener(new View.OnClickListener() { 
    @Override 

    public void onClick(View v) { 

     Intent intent = new Intent(AddActivity.this, MainActivity.class); 
     intent.putExtra("studentName",name.getText().toString()); 
     intent.putExtra("phoneNumber",phone.getText().toString()); 
     startActivity(intent); 

     Student student = new Student(Fname, FphoneNumber); 

     students.add(student); 



    } 
}); 
} 

public void addStudent(){ 
add = (Button) findViewById(R.id.AddStudent); 
add.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(AddActivity.this,Record.class); 
     startActivity(intent); 
    } 
}); 
} 

Student.java - https://jsfiddle.net/gy0g7b0s/

public class Student { 

String mName; 
int mPhoneNumber; 


public Student (String name, int number){ 
mName = name; 
mPhoneNumber = number; 
}; 

public String getmName() { 
return mName; 
} 

public String getmName(String newName) { 
return (this.mName = newName); 
} 

public int getmPhoneNumber() { 
return this.mPhoneNumber; 
} 

public int getmPhoneNumber(int newPhoneNumber) { 
return (this.mPhoneNumber = newPhoneNumber); 
} 

@Override 
public String toString() { 
return String.format("%s\t%f",this.mName, this.mPhoneNumber); 

[1]:[主图像的活动页] http://imgur.com/a/pMWt4

[2]:http://imgur.com/a/8YvVc

[图像添加活动页面]你可以将它们保存为public static variable或创建AddActivity构造,并获得功能。

String student name; /*add value to this variable @onCreate or wherever in your AddActivity*/ 

public class AddActivity(/*here to pass data to addactivity*/){ 
// 
} 
public String getName(){ 
return this.name; 
} 

另一活动

AddActivity ac = new AddActivity(); 
String someName = ac.getName(); 

你可以用这个逻辑来传递数据。

编辑 ,但如果你想传递意图的数据,然后只检查intenr内容的onCreate()

Intent i = getIntent(); 
if(i.hasExtra("intentKey")){//check if it s not null 
String name = i.getExtraString("intentKay"); 
} 
+0

你好你能不能给我看我需要的代码? –

+0

检查意图,因为我编辑我的答案,希望它可以帮助你;) –

+0

你好,我实际上是试图通过添加数据通过EditText点击添加按钮在AddActivity页面,并试图显示我刚刚添加到数据MainActivity页面。 –

我能找到的是,声明数组列表作为静态的,你可以访问这些地方的最佳解决方案如果这些类在同一个包中,则需要提供。但是,如果您想存储这些值,请使用共享首选项。希望这可能会有所帮助。

+0

你好,你能告诉我怎么做吗?我是android开发新手。 –

+0

在AddActivity类中, 声明Arraylist学生如下: public static ArrayList students; 现在,使用学生列表,无论你想要的。 – sivaram

+0

该解决方案是否有效? – sivaram