0

我有 todolist 应用程序,它工作正常。我可以成功添加和编辑项目到列表视图。这是我的问题。当我单击项目时,项目的数据必须通过编辑活动,但现在它是空的,就像添加新项目一样。我能做什么?

编辑项目.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();
        }
    });
4

2 回答 2

1

您应该从 Serializable 接口实现您的 itemList 类,

public class ItemList implements Serializable {
// your class
}

然后在第一个活动中使用:

okIntent.putExtra("editItem", itemList);

在第二个活动中,获取意图数据:

ListItem listItem = (ListItem) getIntent().getSerializableExtra("editItem");
于 2013-11-12T16:45:06.023 回答
0

开始编辑时Activity,您应该传入一些额外的编辑数据。

假设您的DataWrapper课程可以用作“额外”,因此它应该扩展Parcelableor Serializable。(最好使用Parcelable,因为它更快并且专为Android设计,当然Serializable可以使用但我不推荐它)

Activity下面是在start中添加一些参数的示例Intent

Intent i = new Intent(getApplicationContext(), edititem.class);
i.putExtra("editdata",new DataWrapper(clickeditem));
startActivityForResult(i);

然后在edititemActivity中使用以下方法获取数据:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    //Edit mode
    DataWrapper value = extras.getParcelable("editdata"); //Or extras.getSerializable("editdata");
} else {
    //New mode
}

罗尔夫

于 2013-11-12T16:51:13.283 回答