You want to use a ListAdapter bound to a ListView
Your Activity layout will have 2 EditText's, a Button, and a ListView laid out however you want.
onClick of that button will build a new User(name, income) from those EditText values, then add to some adapter or ArrayList<User> that is loaded into the adapter.
public void onClick(View v) {
String name = nameInput.getText().toString();
Double income = Double.parseDouble(incomeInput.getText().toString());
adapter.add(new User(name, income)); // for an ArrayAdapter<User>
}
This User class is to be loaded into an ArrayAdapter<User> and looks like so
public class User {
public String name;
public double income;
public User(String name, double income) {
this.name = name;
this.income = income;
}
@Override
public String toString() {
return String.format("%s : %.2f", this.name, this.income);
}
}
The Adapter can be declared as this, which will toString() anything you add to it, and display it as a string on one line.
adapter = new ArrayAdapter<User>(
MainActivity.this,
android.R.layout.simple_list_item_1);