首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在单击按钮时将自定义对象添加到arraylist

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

Stack Overflow用户
提问于 2016-08-12 03:26:05
回答 2查看 1K关注 0票数 0

我有点迷路了。当一个按钮被点击时,我试图添加一个自定义对象(有3个整数,1个双精度和1个日期)到一个数组列表中。我想让arraylist显示在另一个类的listview中。到目前为止,我为自定义类提供了以下内容:

代码语言:javascript
运行
复制
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 :在单击按钮的类中,我有这个(我不知道如何在单击按钮时获取当前日期):

代码语言:javascript
运行
复制
 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 :在类中,我想将列表视图设置为这个数组列表(我不确定如何从另一个类中获取数组列表):

代码语言:javascript
运行
复制
RecordAdapter adapter = new RecordAdapter(getApplicationContext(),R.layout.custom_record);


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

}

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

代码语言:javascript
运行
复制
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);

}
}

谢谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2016-08-12 03:35:21

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

代码语言:javascript
运行
复制
RecordAdapter adapter = new RecordAdapter(getApplicationContext(),R.layout.custom_record);
ArrayAdapter<Record> arrayAdapter = new ArrayAdapter<Record>(this, R.layout.custom_record, records);

您应该使用其中一个,而不是两个都使用。看起来arrayAdapter应该可以工作了。因此,请更改您的所有代码以使用它。

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

获取当前日期:

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

代码语言:javascript
运行
复制
Date currentDate = new Date();

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-12 04:02:58

您不需要自定义RecordAdapter。你也不需要ArrayList。您可以将ArrayAdapter视为馈送到ListView中的ArrayList。您所需要做的就是创建一个ArrayAdapter,并按照与ArrayList相同的方式填充它

代码语言:javascript
运行
复制
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 ));

然后,当您想要向listview添加记录时,请使用以下命令:

代码语言:javascript
运行
复制
records.add(new Record(maxSquat, maxBench, maxDead, maxTotal));

编辑:

忘了一个非常重要的部分。您需要获取ListView并设置ArrayAdapter以填充它。

代码语言:javascript
运行
复制
ListView listViewRec = (ListView) findViewById(R.id.listViewRecord);
listViewRec.setAdapter(records);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38904588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档