2016-10-06 6 views
0

Итак, теперь у меня есть настраиваемый адаптер списка, который добавляет еще одну строку, когда пользователь выбирает элемент. Дело в том, что каждый элемент в строке должен иметь кнопку изменения, где они могут выбрать любую модификацию (можно выбрать более одной модификации)Добавить изменения к каждому элементу списка избранного

Это приложение для заказа продуктов питания, которое, когда товар выбран, должна быть другая кнопка в списке с надписью «Изменить», где появляется всплывающее окно и позволяет пользователю выбирать, какую модификацию он хочет, используя флажок. («Меньше соли», «Больше соуса» и т. Д.). Каждый список изменений одинаковый для каждого блюда. Когда пользователь выходит из всплывающего окна и нажимает на ту же кнопку изменения, проверенные флажки должны оставаться там.

Первоначально я создал класс Popup, где, когда выбрана кнопка, есть намерение перейти к этой всплывающей активности, но я не смог найти связь между пользовательским адаптером и активностью Popup. Я также попытался использовать AlertDialog, чтобы заменить всплывающее окно, но не смог найти способ сохранить все отмеченные элементы и показать, какие из них были выбраны ранее.

Вот мой код

modifyBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      AlertDialog.Builder builder = new AlertDialog.Builder(context); 
      builder.setTitle("Modification"); 

      final CharSequence[] modify_items = orderClass.getModifyList() 
        .toArray(new CharSequence[orderClass.getModifyList().size()]); 
      builder.setMultiChoiceItems(modify_items, null, new DialogInterface.OnMultiChoiceClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { 
        if(isChecked){ 
         selectedList.add(indexSelected); 
         selectedItems.set(position, selectedList); 
        } 
        else if(selectedList.contains(indexSelected)){ 
         selectedList.remove(Integer.valueOf(indexSelected)); 
         selectedItems.set(position, selectedList); 
        } 
       } 
      }) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 
      AlertDialog dialog = builder.create(); 
      dialog.show(); 
      Log.d("dialog", "Showing dialog"); 


     } 
    }); 


    return view; 
} 

ответ

0

Вы должны поместить данные в структуре держателя (его своего рода класс, который содержит переменные) , то вы можете показать данные по индексу и Тереза ​​является соотношение между индексом представления списка и индекс данных, поэтому при щелчке по ячейке списка просмотра вы получаете позицию, затем находите ее в структуре и отправляете ее в другую деятельность или что-либо еще, чтобы ее изменить. Помните, что вам нужно объявить флаг для запуска активности, иначе приложение будет crash, я думаю, что это называется activtyoutofbound index или что-то вроде этого

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