0

私は 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();
        }
    });
4

2 に答える 2

1

Serializable インターフェイスから itemList クラスを実装する必要があります。

public class ItemList implements Serializable {
// your class
}

次に、最初のアクティビティで使用します。

okIntent.putExtra("editItem", itemList);

2 番目のアクティビティで、インテント データを取得します。

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

編集を開始するときActivityは、追加の編集データを渡す必要があります。

DataWrapperクラスを「追加」として使用できると仮定すると、Parcelableまたは拡張する必要がありSerializableます。(もちろん、Android用に設計されており、より高速でParcelableあるため、使用することをお勧めしますが、もちろん使用できますが、お勧めしません)Serializable

Activitystartにいくつかの引数を追加する例を次に示します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
}

ロルフ

于 2013-11-12T16:51:13.283 に答える