2016-10-06 5 views
1

Сценарий: у меня есть 2 прядильника с одним адаптером и глобальным массивом. Когда кто-либо выбирает элемент из одного счетчика, тогда этот элемент будет удаляться из глобального массива. Проблема заключается в том, что элемент следует выбрать с индексом 0 снова после удаления этого элемента из глобального массива и другого элемента в позиции приобретения с индексом 0. Если я выберу этот пункт с индексом 0, то он не будет выбирать другой, чем будут выбирать все элементы.Динамическая матрица в spinner issue

Так может кто-нибудь объяснить или предложить то, что я хочу сделать в этом сценарии.

 List<String> spinnerArray = new ArrayList<String>(); 
HashMap<String, String> index_val = new HashMap<String, String>(); 
      ArrayAdapter<String> adapter_left; 
      spinnerArray.add("None"); 
       spinnerArray.add("Task"); 
       spinnerArray.add("Priority"); 
       spinnerArray.add("Deadline"); 
       spinnerArray.add("Assigned to"); 
       spinnerArray.add("Created by"); 
       spinnerArray.add("Closed by"); 
       spinnerArray.add("Category"); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity, R.layout.spinner_selected_item, noneArray); 
       adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 

       adapter_left = new ArrayAdapter<String>(activity, R.layout.spinner_selected_item_left, spinnerArray); 

       adapter_left.setDropDownViewResource(R.layout.spinner_dropdown_item); 
    task_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 

        if(!index_val.get("1").equalsIgnoreCase("None")){ 
         spinnerArray.add(index_val.get("1")); 
        } 
        current_selected_val = adapterView.getItemAtPosition(i).toString(); 
        index_val.put("1", current_selected_val); 

        if(!current_selected_val.equalsIgnoreCase("none")) { 
         spinnerArray.remove(spinnerArray.indexOf(current_selected_val)); 

        } 

       } 

       @Override 
       public void onNothingSelected(AdapterView<?> adapterView) { 

       } 

      }); 
+0

что вы пробовали отправить ur код –

+0

опубликовать свой код или сообщить нам, какие усилия вы сделали –

+0

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

ответ

0

Это невозможно, потому что прядильщик сохраняет свои позиции от имени индекса вместо фактических предметов.

+0

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

2

Адаптер Array следует уведомлять каждый раз, когда вы когда-либо редактируете список массивов, например добавление, удаление или обновление.

Сообщайте об этом вашему адаптеру.

Надеюсь, это может вам помочь.

+0

Это должно быть комментарий @Amit –

+0

@ShrenikShah Как вы знаете, моя репутация не выше 50. Так что я не могу комментировать. –

+0

@AmitVaishnava Спасибо за предложение. Но я уже пытался уведомить адаптер. Если я уведомил, то первый элемент массива будет автоматически установлен, и выбранный элемент был удален. –

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

  • Нет связанных вопросов^_^