如何创建允许选择多个项目的微调器,即带有复选框的微调器?同时我需要在Navigation抽屉活动的片段中使用这个多选微调器。
任何人都可以通过合适的示例代码清除我的疑问。
提前谢谢!!!
public class Doctor extends Fragment {
public Doctor() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
getActivity().setTitle("Doctor");
View v = inflater.inflate(R.layout.fragment_doctor, container, false);
String [] values =
{"All Town","Paris","Kodambakkam","Nungambakkam","T.Nagar","Egmore"};
Spinner spinner = (Spinner) v.findViewById(R.id.town);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
String [] values1 =
{"Select Doctor","Doctor1","Doctor2","Doctor3","Doctor4"};
Spinner spinner1 = (Spinner) v.findViewById(R.id.doctor);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values1);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner1.setAdapter(adapter1);
String [] values2 =
{"Worked With","Nagaraj","Muthuvel"};
Spinner spinner2 = (Spinner) v.findViewById(R.id.doctor);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values2);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner2.setAdapter(adapter2);
return v;
}
public void onViewCreated(View view,@Nullable Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
}
}
我需要将spinner2更改为多选微调器。我是从Fragment扩展课程的。因此,不知道如何处理这个多选微调器
答案 0 :(得分:1)
How do I create spinner which allows to choose multiple items, i.e spinner with check boxes?
尝试使用multiselectionspinner。 https://stackoverflow.com/a/6022474/6616489
而
导航抽屉片段内的多选微调器
答案 1 :(得分:0)
public class Doctor extends Fragment{
MultiSelectionSpinner spinner2;
FragmentManager fm = getFragmentManager();
public Doctor() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
getActivity().setTitle("Doctor");
View v = inflater.inflate(R.layout.fragment_doctor, container, false);
String [] values =
{"All Town","Paris","Kodambakkam","Nungambakkam","T.Nagar","Egmore"};
Spinner spinner = (Spinner) v.findViewById(R.id.town);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
String [] values1 =
{"Select Doctor","Doctor1","Doctor2","Doctor3","Doctor4"};
Spinner spinner1 = (Spinner) v.findViewById(R.id.se_doctor);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values1);
adapter1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner1.setAdapter(adapter1);
String [] values2 =
{"Worked With","Nagaraj","Muthuvel"};
// Multi spinner
spinner2 = (MultiSelectionSpinner)v.findViewById(R.id.work);
spinner2.setItems(values2);return v;
}}
上面的代码是持有多选微调器(注意:Spinner2)
public class MultiSelectionSpinner extends Spinner implements
OnMultiChoiceClickListener {
String[] _items = null;
boolean[] mSelection = null;
ArrayAdapter<String> simple_adapter;
public MultiSelectionSpinner(Context context) {
super(context);
simple_adapter = new ArrayAdapter<String>(context,
android.R.layout.simple_spinner_item);
super.setAdapter(simple_adapter);
}
public MultiSelectionSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
simple_adapter = new ArrayAdapter<String>(context,
android.R.layout.simple_spinner_item);
super.setAdapter(simple_adapter);
}
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (mSelection != null && which < mSelection.length) {
mSelection[which] = isChecked;
simple_adapter.clear();
simple_adapter.add(buildSelectedItemString());
} else {
throw new IllegalArgumentException(
"Argument 'which' is out of bounds.");
}
}
@Override
public boolean performClick() {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setMultiChoiceItems(_items, mSelection, this);
builder.show();
return true;
}
@Override
public void setAdapter(SpinnerAdapter adapter) {
throw new RuntimeException(
"setAdapter is not supported by MultiSelectSpinner.");
}
public void setItems(String[] items) {
_items = items;
mSelection = new boolean[_items.length];
simple_adapter.clear();
simple_adapter.add(_items[0]);
Arrays.fill(mSelection, false);
}
public void setItems(List<String> items) {
_items = items.toArray(new String[items.size()]);
mSelection = new boolean[_items.length];
simple_adapter.clear();
simple_adapter.add(_items[0]);
Arrays.fill(mSelection, false);
}
public void setSelection(String[] selection) {
for (String cell : selection) {
for (int j = 0; j < _items.length; ++j) {
if (_items[j].equals(cell)) {
mSelection[j] = true;
}
}
}
}
public void setSelection(List<String> selection) {
for (int i = 0; i < mSelection.length; i++) {
mSelection[i] = false;
}
for (String sel : selection) {
for (int j = 0; j < _items.length; ++j) {
if (_items[j].equals(sel)) {
mSelection[j] = true;
}
}
}
simple_adapter.clear();
simple_adapter.add(buildSelectedItemString());
}
public void setSelection(int index) {
for (int i = 0; i < mSelection.length; i++) {
mSelection[i] = false;
}
if (index >= 0 && index < mSelection.length) {
mSelection[index] = true;
} else {
throw new IllegalArgumentException("Index " + index
+ " is out of bounds.");
}
simple_adapter.clear();
simple_adapter.add(buildSelectedItemString());
}
public void setSelection(int[] selectedIndicies) {
for (int i = 0; i < mSelection.length; i++) {
mSelection[i] = false;
}
for (int index : selectedIndicies) {
if (index >= 0 && index < mSelection.length) {
mSelection[index] = true;
} else {
throw new IllegalArgumentException("Index " + index
+ " is out of bounds.");
}
}
simple_adapter.clear();
simple_adapter.add(buildSelectedItemString());
}
public List<String> getSelectedStrings() {
List<String> selection = new LinkedList<String>();
for (int i = 0; i < _items.length; ++i) {
if (mSelection[i]) {
selection.add(_items[i]);
}
}
return selection;
}
public List<Integer> getSelectedIndicies() {
List<Integer> selection = new LinkedList<Integer>();
for (int i = 0; i < _items.length; ++i) {
if (mSelection[i]) {
selection.add(i);
}
}
return selection;
}
private String buildSelectedItemString() {
StringBuilder sb = new StringBuilder();
boolean foundOne = false;
for (int i = 0; i < _items.length; ++i) {
if (mSelection[i]) {
if (foundOne) {
sb.append(", ");
}
foundOne = true;
sb.append(_items[i]);
}
}
return sb.toString();
}
public String getSelectedItemsAsString() {
StringBuilder sb = new StringBuilder();
boolean foundOne = false;
for (int i = 0; i < _items.length; ++i) {
if (mSelection[i]) {
if (foundOne) {
sb.append(", ");
}
foundOne = true;
sb.append(_items[i]);
}
}
return sb.toString();
}}
上面的代码用于创建从spinner2调用的Multi Selection Spinner。
请仔细阅读代码。如果有任何疑问请在这里发表评论,让我试着澄清你的怀疑。