我在这里有点失落。我正在尝试在单击按钮时将自定义对象(包含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);
}
}
感谢您的帮助
答案 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}}