按钮单击时将自定义对象添加到arraylist

时间:2016-08-11 19:26:05

标签: android listview arraylist custom-adapter

我在这里有点失落。我正在尝试在单击按钮时将自定义对象(包含3个整数,1个双精度和1个日期)添加到arraylist。我希望arraylist显示在另一个类listview中。到目前为止,这就是我对自定义类的看法:

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;
}
}

编辑:类名:MyMaxes.class:在单击按钮的类中,我有这个(我不知道如何在单击按钮时获取当前日期):

 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, ));

编辑:类名= MyProgress.class:在类中我想将listview设置为这个arraylist(我不知道如何从其他类中获取arraylist):

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


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

}

这是我的RecordAdapter类,但我不确定要添加什么:

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);

}
}

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我认为问题在于你有两个不同的适配器:

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

你应该使用其中一个,而不是两个。似乎arrayAdapter应该有效。因此,请更改所有代码以使用它。

或者,您可以使用自定义RecordAdapter。如果你这样做,那么你应该在这个类中创建ArrayList。然后,当用户单击按钮时,您将新的Record对象发送到RecordAdapter实例。最简单的方法是向addRecord()添加RecordAdapter方法。

获取当前日期:

您需要做的就是创建一个新的Date对象:

Date currentDate = new Date();

有关如何使用Date的详细信息,请参阅链接的javadoc。

答案 1 :(得分:1)

您不需要自定义RecordAdapter。你也不需要ArrayList。您可以将ArrayAdapter视为ArrayList,并将其ListView提供给ArrayAdapter。您需要做的就是创建一个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 )); 相同的方式填充它:

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

然后,每当您想要向listview添加记录时,请使用:

ListView

编辑:

忘了一个非常重要的部分。您需要获取ArrayAdapter并设置ListView listViewRec = (ListView) findViewById(R.id.listViewRecord); listViewRec.setAdapter(records); 以填充它。

{{1}}