【发布时间】:2019-02-10 02:43:10
【问题描述】:
我想向我的arrayadapter 添加一个新项目,然后让它在我的视图中呈现。在网上挖掘后,我注意到 ArrayAdapter 类保留了自己的arraylist 版本,如下所述:Android ListView not refreshing after notifyDataSetChanged。
这是我的代码:
The add new item code:
public void addRecordSet(View view) {
RecordStats recordStats = new RecordStats();
recordStats.RecordID = mRecord.id;
long recordStatId = mDatabaseHelper.addRecordStats(recordStats);
recordStats.ID = (int) recordStatId;
recordStatsList.add(recordStats);
mAdapter.swapRecordFormList(recordStatsList);
}
The arrayadapter code:
public void swapRecordFormList(ArrayList<RecordStats> recordStatsList) {
mRecordStatsList = recordStatsList;
notifyDataSetChanged();
}
但是,我得到了这个错误:
Process: com.example.andyxu.enzo3, PID: 19289
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.get(ArrayList.java:437)
有什么想法吗?
编辑:
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View recordForm = convertView;
if (recordForm == null) {
recordForm = LayoutInflater.from(mContext).inflate(R.layout.custom_record_form, parent, false);
}
RecordStats currentRecord = mRecordStatsList.get(position);
EditText reps = (EditText) recordForm.findViewById(R.id.reps);
if (currentRecord.Reps > 0) {
reps.setText(String.valueOf(currentRecord.Reps));
}
EditText weight = (EditText) recordForm.findViewById(R.id.weight);
if (currentRecord.Weight > 0) {
weight.setText(String.valueOf(currentRecord.Weight));
}
return recordForm;
}
【问题讨论】:
-
你从哪里得到的?你能发布那个代码吗?