机器人,实现setOnItemSelectedListener进行动态微调 [英] android, implementing setOnItemSelectedListener to make dynamic spinner
问题描述
有4 Spinnners:
resiko,untung1,untung2,untung3
用户挑选resiko微调先进行和应用程序将显示哪些微调将是可见的(untung1 / untung2 / untung3)
的strings.xml
<字符串数组名=spinner_resiko_string>
<项目> - Pilih - < /项目>
<项目> Sangat Rendah< /项目>
<项目> Rendah< /项目>
<项目> Sedang< /项目>
<项目>&吉丁宜LT; /项目>
< /字符串数组><字符串数组名=spinner_return_string>
<项目> - Pilih - < /项目>
<项目> Rendah< /项目>
< /字符串数组><字符串数组名=spinner_return_string2>
<项目> - Pilih - < /项目>
<项目> Rendah< /项目>
<项目> Sedang< /项目>
< /字符串数组><字符串数组名=spinner_return_string3>
<项目> - Pilih - < /项目>
<项目> Rendah< /项目>
<项目> Sedang< /项目>
<项目>&吉丁宜LT; /项目>
< /字符串数组>
声明:
字符串resikox_;
串untung1_;
串untung2_;
串untung3_;
静态微调resiko;
静态微调untung1;
静态微调untung2;
静态微调untung3;
动态微调code
ArrayAdapter<&CharSequence的GT;适配器= ArrayAdapter.createFromResource(getActivity(),R.array.spinner_resiko_string,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(适配器);
resiko.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
@覆盖
公共无效onItemSelected(适配器视图<> mRelative,查看selectedItemView,INT位置,长的id){ resikox_ = mRelative.getItemAtPosition(位置)的ToString();
SelectedItemMethod(resikox_);
} @覆盖
公共无效onNothingSelected(适配器视图<>母公司){
//做什么或没有
}
}); ArrayAdapter<&CharSequence的GT;适配器2 = ArrayAdapter.createFromResource(getActivity(),R.array.spinner_return_string,android.R.layout.simple_spinner_item);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(适配器2);
resiko.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
@覆盖
公共无效onItemSelected(适配器视图<> mRelative,查看selectedItemView,INT位置,长的id){ untung1_ = mRelative.getItemAtPosition(位置)的ToString();
SelectedItemMethod(untung1_);
} @覆盖
公共无效onNothingSelected(适配器视图<>母公司){
//做什么或没有
}
}); ArrayAdapter<&CharSequence的GT;适配器3 = ArrayAdapter.createFromResource(getActivity(),R.array.spinner_return_string2,android.R.layout.simple_spinner_item);
adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(适配器3);
resiko.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
@覆盖
公共无效onItemSelected(适配器视图<> mRelative,查看selectedItemView,INT位置,长的id){ untung2_ = mRelative.getItemAtPosition(位置)的ToString();
SelectedItemMethod(untung2_);
} @覆盖
公共无效onNothingSelected(适配器视图<>母公司){
//做什么或没有
}
}); ArrayAdapter<&CharSequence的GT; adapter4 = ArrayAdapter.createFromResource(getActivity(),R.array.spinner_return_string3,android.R.layout.simple_spinner_item);
adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(adapter4);
resiko.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
@覆盖
公共无效onItemSelected(适配器视图<> mRelative,查看selectedItemView,INT位置,长的id){ untung3_ = mRelative.getItemAtPosition(位置)的ToString();
SelectedItemMethod(untung3_);
} @覆盖
公共无效onNothingSelected(适配器视图<>母公司){
//做什么或没有
}
});
SelectedItemMethod:
//类的方法做你的项目选择的东西。
公共无效SelectedItemMethod(字符串项){
如果(resikox_.equals(Sangat Rendah)){
untung1.setVisibility(View.VISIBLE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.GONE);
。untungx = untung1.getSelectedItem()的toString();
}否则如果(resikox_.equals(Rendah)){
untung1.setVisibility(View.GONE);
untung2.setVisibility(View.VISIBLE);
untung3.setVisibility(View.GONE);
。untungx = untung2.getSelectedItem()的toString();
}否则如果(resikox_.equals(Sedang)||(resikox.equals(丁宜))){
untung1.setVisibility(View.GONE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.VISIBLE);
。untungx = untung3.getSelectedItem()的toString();
}其他{
untung1.setVisibility(View.GONE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.GONE);
}
}
我试着用getItemAtPosition(位置),而不是getSelectedItem()之前。但位置是不能忽视的决心
然后我得到了显示java.lang.NullPointerException和应用程序崩溃
logcat的:
12-23 21:13:13.171 14033-14033 / com.example.fabio.tabdrawer E / AndroidRuntime:致命异常:主要
工艺:com.example.fabio.tabdrawer,PID:14033
显示java.lang.NullPointerException
在com.example.fabio.tabdrawer.Menu_PIAF.SelectedItemMethod(Menu_PIAF.java:1336)
在com.example.fabio.tabdrawer.Menu_PIAF $ 4.onItemSelected(Menu_PIAF.java:234)
在android.widget.AdapterView.fireOnSelected(AdapterView.java:964)
在android.widget.AdapterView.access $ 200(AdapterView.java:49)
在android.widget.AdapterView $ SelectionNotifier.run(AdapterView.java:928)
在android.os.Handler.handleCallback(Handler.java:733)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:146)
在android.app.ActivityThread.main(ActivityThread.java:5487)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1283)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
在dalvik.system.NativeStart.main(本机方法)
在那里我没有错吧?
行1336:它的一个在SelectedItemMethod
如果(resikox_.equals(Sangat Rendah))
行234:是这样的。
SelectedItemMethod(untung3_);
对于初学者来说:
公共无效SelectedItemMethod(字符串项){
如果(item.equals(Sangat Rendah)){
untung1.setVisibility(View.VISIBLE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.GONE);
//并删除这个!这将抛出一个错误。
// untungx = untung1.getSelectedItem()的toString();
}否则如果(item.equals(Rendah)){
... / ...
您是路过所选项目的值作为参数传递到您的SelectedItemMethod为String项目。
所以,当你拨打:
SelectedItemMethod(untung1_);
字符串项= untung1 _
还有:
的父
不存在:
@覆盖
公共无效onNothingSelected(适配器视图<> mRelative){
//做什么或没有
}
There are 4 Spinnners: resiko,untung1,untung2,untung3
The user picks resiko spinner first to proceed and the app will show which Spinner will be visible (untung1/untung2/untung3)
strings.xml
<string-array name="spinner_resiko_string">
<item>--Pilih--</item>
<item>Sangat Rendah</item>
<item>Rendah</item>
<item>Sedang</item>
<item>Tinggi</item>
</string-array>
<string-array name="spinner_return_string">
<item>--Pilih--</item>
<item>Rendah</item>
</string-array>
<string-array name="spinner_return_string2">
<item>--Pilih--</item>
<item>Rendah</item>
<item>Sedang</item>
</string-array>
<string-array name="spinner_return_string3">
<item>--Pilih--</item>
<item>Rendah</item>
<item>Sedang</item>
<item>Tinggi</item>
</string-array>
declaration :
String resikox_;
String untung1_;
String untung2_;
String untung3_;
static Spinner resiko;
static Spinner untung1;
static Spinner untung2;
static Spinner untung3;
the dynamic spinner code
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.spinner_resiko_string,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(adapter);
resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> mRelative, View selectedItemView, int position, long id) {
resikox_ = mRelative.getItemAtPosition(position).toString();
SelectedItemMethod(resikox_);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//DO WHATEVER OR NOTHING
}
});
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(getActivity(), R.array.spinner_return_string,android.R.layout.simple_spinner_item);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(adapter2);
resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> mRelative, View selectedItemView, int position, long id) {
untung1_ = mRelative.getItemAtPosition(position).toString();
SelectedItemMethod(untung1_);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//DO WHATEVER OR NOTHING
}
});
ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(getActivity(), R.array.spinner_return_string2,android.R.layout.simple_spinner_item);
adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(adapter3);
resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> mRelative, View selectedItemView, int position, long id) {
untung2_ = mRelative.getItemAtPosition(position).toString();
SelectedItemMethod(untung2_);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//DO WHATEVER OR NOTHING
}
});
ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(getActivity(), R.array.spinner_return_string3,android.R.layout.simple_spinner_item);
adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
resiko.setAdapter(adapter4);
resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> mRelative, View selectedItemView, int position, long id) {
untung3_ = mRelative.getItemAtPosition(position).toString();
SelectedItemMethod(untung3_);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//DO WHATEVER OR NOTHING
}
});
SelectedItemMethod :
// Class method to do your item selection stuff.
public void SelectedItemMethod(String item){
if (resikox_.equals("Sangat Rendah")) {
untung1.setVisibility(View.VISIBLE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.GONE);
untungx = untung1.getSelectedItem().toString();
} else if (resikox_.equals("Rendah")){
untung1.setVisibility(View.GONE);
untung2.setVisibility(View.VISIBLE);
untung3.setVisibility(View.GONE);
untungx = untung2.getSelectedItem().toString();
} else if (resikox_.equals("Sedang") || (resikox.equals("Tinggi"))) {
untung1.setVisibility(View.GONE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.VISIBLE);
untungx = untung3.getSelectedItem().toString();
} else {
untung1.setVisibility(View.GONE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.GONE);
}
}
i tried using getItemAtPosition(position) instead of getSelectedItem() before. but the "position" cant be resolve
then i got java.lang.NullPointerException and app crash
logcat :
12-23 21:13:13.171 14033-14033/com.example.fabio.tabdrawer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.fabio.tabdrawer, PID: 14033
java.lang.NullPointerException
at com.example.fabio.tabdrawer.Menu_PIAF.SelectedItemMethod(Menu_PIAF.java:1336)
at com.example.fabio.tabdrawer.Menu_PIAF$4.onItemSelected(Menu_PIAF.java:234)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:964)
at android.widget.AdapterView.access$200(AdapterView.java:49)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:928)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
where i did it wrong now ?
line 1336 : its the one in SelectedItemMethod
if (resikox_.equals("Sangat Rendah"))
line 234 : is this
SelectedItemMethod(untung3_);
For starters:
public void SelectedItemMethod(String item){
if (item.equals("Sangat Rendah")) {
untung1.setVisibility(View.VISIBLE);
untung2.setVisibility(View.GONE);
untung3.setVisibility(View.GONE);
// And remove this! This will throw an error.
// untungx = untung1.getSelectedItem().toString();
} else if (item.equals("Rendah")){
.../...
You are passing the value of the selected item as a parameter into your SelectedItemMethod as String item.
So when you call:
SelectedItemMethod(untung1_);
String item = untung1_
Also:
The parent
does not exist:
@Override
public void onNothingSelected(AdapterView<?> mRelative) {
//DO WHATEVER OR NOTHING
}
这篇关于机器人,实现setOnItemSelectedListener进行动态微调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!