0
我有一個ArrayAdapter
調用SpinnerAdapter
,因爲它的佈局需要android.R.layout.simple_spinner_item
。由於要顯示的數據也需要ContactInfo
對象的ArrayList
。改變項目選擇後Android中單個微調項目的背景顏色
然後我有一個Spinner
叫做selectionWheel
並且當做出「選擇」時;它會從之前提到的ArrayList
中提取ContactInfo
對象,並將其添加到新的ArrayList
。
現在,當我第二次調出Spinner
;我想檢查兩個ArrayLists
之間的匹配項,如果有匹配項,通過更改它們的背景顏色來突出顯示Spinner
中的相應項目。
以下是我已經嘗試:
final Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.generic_selection_wheel);
dialog.setTitle("Select a contact");
final ArrayAdapter<ContactInfo> contactSelectionAdapter = new ArrayAdapter<ContactInfo>(
getActivity().getBaseContext(),
android.R.layout.simple_spinner_item, globaldata
.getContactInfoList());
contactSelectionAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Button dialogButtonOK = (Button) dialog
.findViewById(R.id.dialogButtonOK);
final Spinner selectionWheel = (Spinner) dialog
.findViewById(R.id.genericselectionspinner);
selectionWheel.setAdapter(contactSelectionAdapter);
selectionWheel
.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
// check to see if the contact has already been
// selected, if not add it. If it has do
// nothing.
View viewToChange = contactSelectionAdapter
.getView(position, new View(
getActivity()
.getBaseContext()),
parent);
if (!activeContactsArrayList
.contains(globaldata
.getContactInfoList().get(
position))) {
activeContactsArrayList
.add(globaldata
.getContactInfoList().get(
position));
viewToChange.setBackgroundColor(Color.GREEN);;
} else if (activeContactsArrayList
.contains(globaldata
.getContactInfoList().get(
position))) {
activeContactsArrayList.remove(position);
viewToChange.setBackgroundColor(Color.WHITE);;
}
selectContactsBtn
.setText(activeContactsArrayList.size()
+ " contacts selected");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// if button is clicked, close the custom dialog
dialogButtonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
});
然而,這並不做其中我描述了預期的效果,而且我不確定哪裏去從這裏...