2013-11-12 8 views
0

У меня есть todolist app, и он отлично работает. Я могу добавить и отредактировать элемент для просмотра списка. Вот моя проблема. Когда я нажимаю элемент, данные элемента должны передавать действие редактирования, но теперь он пуст, как добавление нового элемента. Что это может сделать?как передать данные кликаемого элемента в другую деятельность

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

ответ

1

Вы должны реализовать свой класс ITEMLIST от Serializable интерфейс,

public class ItemList implements Serializable { 
// your class 
} 

, а затем использовать в первой деятельности:

okIntent.putExtra("editItem", itemList); 

во второй деятельности, получить целевые данные:

ListItem listItem = (ListItem) getIntent().getSerializableExtra("editItem"); 
+0

Да, это проблема seriazizable.my, когда я нажимаю на добавленный элемент класса Editıtem, и это данные empty.item должны передать этот класс из списка, чтобы пользователь мог редактировать элемент. – user1060251

+0

попытайтесь полностью инициализировать свой editItem. 'DataWraper dataWraper = новый DataWraper (itemList);' , а затем поместить его в намерения. Также я не заметил в вашем коде, когда вы инициализируете переменную itemList. Возможно, вы это забыли. – yurezcv

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 
} 

Rolf

+0

yes, dataWrapper class serializable.I может получить удаленные данные. Когда я нажимаю на добавленный элемент, который запускает действие EditItem, и данные элемента clicked не передаются здесь. Он должен отображать выбранные данные элементов, такие как задание, дата, чтобы пользователь мог редактировать его. – user1060251

+0

Вы пробовали добавьте код из моего ответа на ваш проект. Если вы это сделали и все еще не работает, отправьте код завершения из обоих действий. Поэтому я могу помочь вам дальше. –

Смежные вопросы