スピナーが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;
}