简体   繁体   中英

How to include spinner to alert dialog or display it as alert dialog or some alternative

I created my spinner dropdown and it's working perfectly but my client suddently decided that he want an alert dialog instead of dropdown list. Is there any easy way to achieve that. I never worked with alert dialogs and this is new for me. Would appreciate any advice? What do I need to change inflate etc so when user click on spinner it open an alert dialog with list in it so user can select year and month and send network request.

public class Izvjestaji extends Fragment {
// The onCreateView method is called when Fragment should create its View object hierarchy,
// either dynamically or via XML layout inflation.

private int godinaPozicija = 0;
private int mjesecPozicija = 0;
private Spinner godina;
private Spinner mjesec;
private int offset = 0;
private ArrayList<Transactions> listTransactons;
private SwipyRefreshLayout swipyRefreshLayout;
private boolean isFirstLoad=true;

ListView list;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    // Defines the xml file for the fragment
    View rootView = inflater.inflate(R.layout.izvjestaji, parent, false);
    int year = Calendar.getInstance().get(Calendar.YEAR);
    int month = Calendar.getInstance().get(Calendar.MONTH);
    swipyRefreshLayout = (SwipyRefreshLayout) rootView.findViewById(R.id.swipyrefreshlayout);
    listTransactons = new ArrayList<>();
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 2015; i <= year; i++) {
        list.add(i);

    }
    List<String> list2 = new ArrayList<String>();
    list2.add("Januar");
    list2.add("Februar");
    list2.add("Mart");
    list2.add("April");
    list2.add("Maj");
    list2.add("Juni");
    list2.add("Juli");
    list2.add("Avgust");
    list2.add("Septembar");
    list2.add("Oktobar");
    list2.add("Novembar");
    list2.add("Decembar");


    swipyRefreshLayout.setOnRefreshListener(new SwipyRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh(SwipyRefreshLayoutDirection direction) {
            if (direction == SwipyRefreshLayoutDirection.BOTTOM) {
                Toast.makeText(getActivity(), "Učtivanje podataka", Toast.LENGTH_LONG).show();
                offset++;
                showList();
            }

        }

    });

    godina = (Spinner) rootView.findViewById(R.id.spinner);
    godina.getBackground().setColorFilter(getResources().getColor(R.color.neonGreen),PorterDuff.Mode.SRC_ATOP);

    ArrayAdapter<Integer> dataAdapter = new ArrayAdapter<Integer>(getActivity(), R.layout.custom_spinner, list);
    dataAdapter.setDropDownViewResource(R.layout.custom_spinner_row);
    godina.setAdapter(dataAdapter);
    godina.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(!isFirstLoad){
                listTransactons.clear();
                showList();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    godina.setSelection(year - 2015);

    mjesec = (Spinner) rootView.findViewById(R.id.spinner1);
    mjesec.getBackground().setColorFilter(getResources().getColor(R.color.neonGreen),PorterDuff.Mode.SRC_ATOP);

    ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>(getActivity(), R.layout.custom_spinner, list2);
    dataAdapter1.setDropDownViewResource(R.layout.custom_spinner_row);
    mjesec.setAdapter(dataAdapter1);
    mjesec.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(!isFirstLoad){
                listTransactons.clear();
                showList();
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    mjesec.setSelection(month);

    return rootView;

}


// This event is triggered soon after onCreateView().
// Any view setup should occur here.  E.g., view lookups and attaching view listeners.
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    list = (ListView) view.findViewById(R.id.izvjestaji_list);
    showList();

    // Setup any handles to view objects here
    // EditText etFoo = (EditText) view.findViewById(R.id.etFoo);

}

public void showList() {
    NetworkSDK.getInstance().getTransactions(mjesec.getSelectedItemPosition() + 1, godina.getSelectedItemPosition() + 2015, 10, offset, new Callback<List<Transactions>>() {
        @Override
        public void onResponse(Call<List<Transactions>> call, Response<List<Transactions>> response) {
            if (response.isSuccess()) {
                isFirstLoad=false;
                Log.d("Data", String.valueOf(response.isSuccess()));
                for (int i = 0; i < response.body().size(); i++)
                    listTransactons.add(response.body().get(i));
                TransactionsAdapter transactionsAdapter = new TransactionsAdapter(listTransactons);
                list.setAdapter(transactionsAdapter);
                transactionsAdapter.notifyDataSetChanged();
                if (swipyRefreshLayout != null) swipyRefreshLayout.setRefreshing(false);


            }
        }

        @Override
        public void onFailure(Call<List<Transactions>> call, Throwable t) {
            Log.d("Error", "Def error");

        }
    });
}


}

Have you tried,

<Spinner style="@android:style/Widget.Spinner.DropDown" ... />

or

<Spinner android:spinnerMode="dropdown" ... />

check this answer: set spinner mode in XML

More info : http://developer.android.com/reference/android/R.attr.html#spinnerMode

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM