Adding custom object to arraylist on button click

拟墨画扇 提交于 2019-12-25 09:15:07

问题


I'm a little lost here. I'm trying to add a custom object(with 3 integers, 1 double, and 1 date) to an arraylist when a button is clicked. I want the arraylist to be shown in another classes listview. So far this is what I have for the custom class:

ublic class Record {

private Integer squat, bench, dead;
private double total;
private Date dateTime;

public Record(int squat, int bench, int dead, double total, Date date) {
    this.bench = bench;
    this.dateTime = date;
    this.dead = dead;
    this.squat = squat;
    this.total = total;
}

public Integer getSquat() {
    return squat;
}

public void setSquat(Integer squat) {
    this.squat = squat;
}

public Integer getBench() {
    return bench;
}

public void setBench(Integer bench) {
    this.bench = bench;
}

public Integer getDead() {
    return dead;
}

public void setDead(Integer dead) {
    this.dead = dead;
}

public Double getTotal() {
    return total;
}

public void setTotal(Integer total) {
    this.total = total;
}

public Date getDateTime() {
    return dateTime;
}

public void setDateTime(Date dateTime) {
    this.dateTime = dateTime;
}
}

EDIT: Classname: MyMaxes.class : In the class where the button is clicked, I have this(I'm not sure how to get the current date when button is clicked):

 public ArrayList<Record> records = new ArrayList<>();
maxTotal = maxDead + maxBench + maxSquat;
 int maxDead = Integer.parseInt(mEditTextDead.getText().toString());
                int maxSquat = Integer.parseInt(mEditTextSquat.getText().toString());
                int maxBench = Integer.parseInt(mEditTextBench.getText().toString());


                records.add(new Record(maxSquat, maxBench, maxDead, maxTotal, ));

Edit: Class name = MyProgress.class : And in the class I want to set the listview to this arraylist(I'm not sure how to get the arraylist from the other class):

RecordAdapter adapter = new RecordAdapter(getApplicationContext(),R.layout.custom_record);


    ListView listViewRec = (ListView) findViewById(R.id.listViewRecord);

}

This is my RecordAdapter class, but im not sure what to add there either:

public class RecordAdapter extends ArrayAdapter<Record> {

public RecordAdapter(Context context, int resource) {
    super(context, resource);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return super.getView(position, convertView, parent);

}
}

Thanks for any help


回答1:


I think the problem is that you have two different adapters:

RecordAdapter adapter = new RecordAdapter(getApplicationContext(),R.layout.custom_record);
ArrayAdapter<Record> arrayAdapter = new ArrayAdapter<Record>(this, R.layout.custom_record, records);

You should use one or the other, not both. It appears that arrayAdapter should work. So change all of your code to use it.

Alternatively, you can use your custom RecordAdapter. If you do this, then you should create the ArrayList inside this class. Then when the user clicks a button, you send the new Record object to the RecordAdapter instance. The easiest way to do this is to add a addRecord() method to RecordAdapter.

Get Current Date:

All you need to do is create a new Date object:

Date currentDate = new Date();

See the linked javadocs for details about how to use Date.




回答2:


You do not need the custom RecordAdapter. Nor do you need the ArrayList. You can treat your ArrayAdapter as an ArrayList that feeds into your ListView. All you need to do is create an ArrayAdapter and populate it the same way you do with the ArrayList:

public ArrayAdapter<Record> records = new ArrayAdapter<>(getApplicationContext(), R.layout.custom_record);
maxTotal = maxDead + maxBench + maxSquat;
int maxDead = Integer.parseInt(mEditTextDead.getText().toString());
int maxSquat = Integer.parseInt(mEditTextSquat.getText().toString());
int maxBench = Integer.parseInt(mEditTextBench.getText().toString());


records.add(new Record(maxSquat, maxBench, maxDead, maxTotal ));

Then, whenever you want to add a record to you listview, use this:

records.add(new Record(maxSquat, maxBench, maxDead, maxTotal));

EDIT:

Forgot a very important part. You need to get your ListView and set the ArrayAdapter to populate it.

ListView listViewRec = (ListView) findViewById(R.id.listViewRecord);
listViewRec.setAdapter(records);


来源:https://stackoverflow.com/questions/38904588/adding-custom-object-to-arraylist-on-button-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!