我填充了 Spinner ,它出现在 DialogFragment 中,有两个列表 - list1 和 list2 。我希望列表以两种不同的颜色显示:即下拉列表中的list1为蓝色,list2为红色。 我怎样才能动态实现这个目标?
public class AlertDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog, null);
Spinner spin;
spin = (Spinner)view.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
list.add("Material 1");
list.add("Material 2");
list.add("Material 3");
list.add("Material 4");
list.add("Material 5");
list.add("Material 6");
//Second List
List<String> list2 = new ArrayList<String>();
list2.add("Mat 7");
list2.add("Mat 8");
list2.add("Mat 9");
//Combined List
List<String> listCombine = new ArrayList<String>();
listCombine.addAll(list);
listCombine.addAll(list2);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, listCombine);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(dataAdapter);
builder
.setTitle("Title")
.setView(view)
.setPositiveButton("Add", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
答案 0 :(得分:0)
最可靠的方法是创建一个自定义适配器以使用两种不同的布局:一种红色和一种蓝色。您需要覆盖以下三种方法:
getViewTypeCount()
返回2告诉Adapter期望两种不同的行布局。 getItemViewType()
返回此行是在第一个List还是第二个。getDropDownView()
致电getItemViewType()
并使用相应的布局。或者您可以自行覆盖getDropDownView()
以更改相应的颜色。