如何将微调器包含在警报对话框中或将其显示为警报对话框或其他替代方法
How to include spinner to alert dialog or display it as alert dialog or some alternative
我创建了我的微调器下拉菜单并且它运行良好,但我的客户突然决定他想要一个警告对话框而不是下拉列表。有什么简单的方法可以实现这一目标。我从未使用过警报对话框,这对我来说是新的。会很感激任何建议吗?我需要更改 inflate 等什么,以便当用户单击微调器时它会打开一个带有列表的警报对话框,以便用户可以 select 年和月并发送网络请求。
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");
}
});
}
}
你试过了吗,
<Spinner style="@android:style/Widget.Spinner.DropDown" ... />
or
<Spinner android:spinnerMode="dropdown" ... />
检查这个答案:set spinner mode in XML
更多信息:http://developer.android.com/reference/android/R.attr.html#spinnerMode
我创建了我的微调器下拉菜单并且它运行良好,但我的客户突然决定他想要一个警告对话框而不是下拉列表。有什么简单的方法可以实现这一目标。我从未使用过警报对话框,这对我来说是新的。会很感激任何建议吗?我需要更改 inflate 等什么,以便当用户单击微调器时它会打开一个带有列表的警报对话框,以便用户可以 select 年和月并发送网络请求。
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");
}
});
}
}
你试过了吗,
<Spinner style="@android:style/Widget.Spinner.DropDown" ... />
or
<Spinner android:spinnerMode="dropdown" ... />
检查这个答案:set spinner mode in XML
更多信息:http://developer.android.com/reference/android/R.attr.html#spinnerMode