我有todolist应用程序,它工作正常。我可以成功添加和编辑项目到列表视图。这是我的问题。当我点击项目时,项目的数据必须通过编辑活动,但现在它是空的,如添加新项目。可以做什么?
editItem.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_item);
editText1 = (EditText) findViewById(R.id.editText1);
spinner = (Spinner) findViewById(R.id.prioritySpinner);
datePicker = (DatePicker) findViewById(R.id.datePicker);
toggleButton = (ToggleButton) findViewById(R.id.statusbutton);
editButton = (Button) findViewById(R.id.editButton);
cancelButton = (Button) findViewById(R.id.cancelButton);
editButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// ArrayList<String> b = new ArrayList<String>();
task = editText1.getText().toString();
priorityLevel = spinner.getSelectedItem().toString();
status = toggleButton.getText().toString();
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth() + 1;
int year = datePicker.getYear();
date = day + "/" + month + "/" + year;
itemList.setName(task);
itemList.setPriorityLevel(priorityLevel);
itemList.setStatus(status);
itemList.setDueDate(date);
Intent okIntent = new Intent();
okIntent.putExtra("editItem", new DataWrapper(itemList));
setResult(Activity.RESULT_OK, okIntent);
finish();
}
});
答案 0 :(得分:1)
您应该从Serializable接口
实现itemList类public class ItemList implements Serializable {
// your class
}
然后在第一项活动中使用:
okIntent.putExtra("editItem", itemList);
在第二项活动中,获取意图数据:
ListItem listItem = (ListItem) getIntent().getSerializableExtra("editItem");
答案 1 :(得分:0)
开始编辑Activity
时,您应该传递一些额外的编辑数据。
假设您的DataWrapper
课程可以用作“额外”课程,那么它应该延伸Parcelable
或Serializable
。 (最好使用Parcelable
,因为更快,专为Android设计,当然Serializable
可以使用,但我不建议使用它)
以下是向Activity
开始Intent
添加一些参数的示例:
Intent i = new Intent(getApplicationContext(), edititem.class);
i.putExtra("editdata",new DataWrapper(clickeditem));
startActivityForResult(i);
然后在edititem Activity
中使用以下方式获取数据:
Bundle extras = getIntent().getExtras();
if (extras != null) {
//Edit mode
DataWrapper value = extras.getParcelable("editdata"); //Or extras.getSerializable("editdata");
} else {
//New mode
}
罗尔夫