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();
}
});
然而,这并不做其中我描述了预期的效果,而且我不确定哪里去从这里...