0

スピナーがlistView内のcheckBoxと競合している理由を見つけようとしています。スピナー行にコメントを付けると、checkBox リスナーが正常に動作し、それを選択して、選択されているかどうかを確認し、リストの行を削除できます。以下のコードのように、スピナー宣言を行うと、リスナーが機能し、checkBox を選択できますが、( checkToDeleteメソッドで) 選択されたアイテムを取得しようとすると、選択された checkBox の戻り値は常に空になります (そこのように)は何も選択されていません)。項目の数量を確認するにはスピナーが必要で、行を削除するには checkBox が必要です。

とにかく、私は 2 日間解決策を研究してきましたが、何が起こっているのかを知り、将来の間違いを防ぐ前に、この問題を手放したくありません。私が見つけた1つの可能な解決策は、スピナーの使用を避け、代わりにAlertDialogでボタンを使用することです

ここで何が欠けているか知っている人はいますか?

 @Override
        public View getView(final int position,View convertView, ViewGroup viewGroup) {
            LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            final View rowView = inflater.inflate(R.layout.menu_itens, viewGroup
                    , false);

            String itemName = MENU_ITEM.get(position);
            TextView item = (TextView) rowView.findViewById(R.id.item);     
                item.setText(itemName);
            imageView = (ImageView) rowView.findViewById(R.id.itemImage);

            checkBox[position] = (CheckBox) rowView.findViewById(R.id.check);
            checkBox[position].setTag(itemName);
            checkBox[position].setOnCheckedChangeListener(new OnCheckedChangeListener() {

                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {               
                        checkBox[position].setSelected(buttonView.isChecked());
                    }            
                });         
                spinner[position] = (Spinner) rowView.findViewById(R.id.quantity);
                spinner[position].setAdapter(spinnerAdapterArray[position]);
                spinner[position].setOnItemSelectedListener(new OnItemSelectedListener() {

                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view,
                            int pos, long id) {
                        //Listener options      
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
                        // TODO Auto-generated method stub              
                    }           
                });
                return rowView;
            }

      public List<Integer> checkListToDelete() {

        List<Integer> aux = new ArrayList<Integer>();   
        for(int i=0; i<MENU_SIZE; i++){
            System.out.println(checkBox[i].isChecked());
            if(checkBox[i].isChecked()){
                checkBox[i].setChecked(false);
                aux.add(i);
                }
            }   
        return aux; 
        }
4

1 に答える 1