如何在导航抽屉活动的片段中使用具有多项选择的 Android Spinner

How to use Android Spinner with multiple choice in Fragment of Navigation drawer activity

如何创建允许选择多个项目的微调器,即带有复选框的微调器?同时我需要在导航抽屉活动的片段中使用这个多选微调器。

任何人都可以用合适的示例代码解决我的疑问。

提前谢谢你!!!

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 扩展课程。所以不知道如何处理这个多选微调器

相关讨论

  • 你在 DrawerLayout 中使用 NavigationView
  • 我还没有得到任何关于这个的代码。无论我尝试什么,我都会在片段 java 中收到错误消息。
  • 是的,我在 DrawerLayout 中使用 NavigationView。
  • github.com/GunaseelanArumaikkannu/MultiSpinner
  • stackoverflow.com/questions/38559248/…,我认为它可能对你有用
  • 请参阅此链接答案以获取导航抽屉自定义 stackoverflow.com/a/40103274/2784663
  • 使用多选复选框 trinitytuts.com/tips/multiselect-spinner-item-in-android 引用此微调器
  • YLS 谢谢。我已经在 Doctor 中扩展了 Fragment,顺便说一下,我无法同时扩展 Spinner。这个错误怎么处理???

How do I create spinner which allows to choose multiple items, i.e spinner with check boxes?

尝试使用 multiselectionspinner。
https://stackoverflow.com/a/6022474/6616489

对于

multiple choice spinner inside the fragment of Navigation drawer

参考 https://stackoverflow.com/a/20017862/6616489

相关讨论

  • 您能说一下如何使用"class Doctor extends Fragment,Spinner implements DialogInterface.OnMultiChoiceClickListener"吗??对此有错误...
  • 您还可以提供一张您想要实现的目标的图片吗?建议会更容易
  • 如果可能,请发布您的解决方案
  • 请查看我发布的答案。

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;
}}

上面的代码是多选微调器(注:微调器2)

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 调用的多选微调器。

请检查代码。如果有任何疑问,请在此处发表评论,让我尝试消除您的疑问。


以上是如何在导航抽屉活动的片段中使用具有多项选择的 Android Spinner的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>