2015-08-16 2 views
1

У меня есть активность, которая создает контрольный список, если я закрываю действие с помощью кнопки «Назад», список сохраняется в базе данных.Добавить элемент в ListView

Список из базы данных используется в качестве содержимого MainActivity.

Это как мое приложение будет выглядеть:

enter image description here

Если я нажму List Item кнопку, новый элемент должен быть добавлен в список. Как добавить и отобразить новый элемент (Layout with Checkbox и EditText)?

Нужен ли мне адаптер? Я не хочу, чтобы часть элемента списка повторялась.

enter image description here

Это выглядит так, после того, как я нажимаю 4 раза

+0

у меня есть редактировать мое сообщение .. я не имею адаптер, потому что я не знаю, как я должен начать – mimu1011

+0

я путаюсь объявление этот пункт .. я знаю, что я нужен переходник, но если у меня есть строки array Я добавляю строку из них в TextView .. знаю, что у меня нет String ... У меня есть макет, который нужно добавить? где ist my Problem, я настолько смущен – mimu1011

+0

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

ответ

1

активность

private ArrayAdapter mAdapter; 

OnCreate

ListView lv = (ListView) findViewById(R.id.my_list); 
List<String> initialList = new ArrayList<String>(); //load these 
mAdapter = new ArrayAdapter(this, android.R.id.text1, initialList) 
lv.setadapter(mAdapter); 

Когда событие происходит методом

mAdapter.add(newString); 

ДОБАВЛЯТЬ в Arr ayAdpater автоматически позаботится о вызове notifyDataSetChanged() и обновит дисплей.

TextWatcherВы не могли бы нуждаться в этой части, это, если вы хотите, чтобы текст, добавленный как только текст изменен, который, кажется, ваш вопрос, чтобы указать, - это рискованно, потому что вы можете получить частичные записи, поэтому я рекомендую сделано кнопка вместо этого, и в этом случае вы просто делаете afterTextChanged в методе onClick.

EditText editText = (EditText) findViewById(R.id.my_edit_text); 
editText .addTextChangedListener(new TextWatcher(){ 

     @Override 
     public void afterTextChanged(Editable arg0) { 

      //TODO: check it isnt emtpy 
      String text = arg0.getText().toString(); 
      mAdapter.add(text); 

      //Hide the add item views again 
      arg0.setText(""); 
      arg0.setVisibility(View.GONE); 


     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, 
       int arg2, int arg3) { /*nothing*/ } 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { /*nothing*/ } 


}); 
+0

это полезно спасибо. Я пытаюсь это сделать. Я повторил свой ответ с новым снимком экрана. Это похоже на ваше решение? – mimu1011

+0

Да, мой пример для части listenintrag, но вы можете использовать часть TextWatcher для каждого элемента, чтобы сохранить изменения, внесенные в существующие элементы, если это то, что должен показать скриншот (если вам нужна помощь в этом отдельном вопросе) –

+0

Скриншот у меня новая редакция .. была моя проблема .. после того, как я попытался сделать textWatcher или Button или что-то в этом роде. Я могу добавить строки для моего адаптера ... но как я могу добавить макет или новый EditText plus checkbox после того, как я нажму кнопку Listeneintrag ... содержимое было пустым, и пользователь начал делать новую задачу и т. д. – mimu1011

0

Вы можете добавить плюс кнопка в списке, как footerview, как ваш образ, то новый элемент добавить в ваш ArrayList действием (onClicklistener) зрения колонтитула затем вызовите youradapter.notifyDataSetChanged().

+0

Как должен выглядеть мой адаптер? У меня такая же идея, но как я могу добавить это представление в список? Я должен раздуть макет из нового элемента и добавить его в свой адаптер? – mimu1011

+0

list = (ListView) findViewById (android.R.id.Посмотреть список); View footerView = ((LayoutInflater) getApplicationContext.getSystemService (Context.LAYOUT_INFLATER_SERVICE)). Inflate (R.layout.footer_layout, null, false); listView.addFooterView (footerView); – Masum

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