Android-多个微调器
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10777977/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Android- Multiple Spinners
提问by Lijap
I have this code:
我有这个代码:
package lijap.app.starcraft2counters;
import java.io.File;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class Settings extends Activity implements OnItemSelectedListener {
Spinner answertime;
Spinner gametime;
Spinner missesallowed;
String[] answerseconds = { "Unlimited", "1 second", "2 seconds", "3 seconds",
"4 seconds", " 5 seconds" };
String[] gameminutes = { "Unlimited", "1 minute", "2 minutes", "3 minutes",
"4 minutes", " 5 minutes" };
String[] numberofmisses = { "Unlimited", "5", "10", "15",
"20", "25" };
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Settings.this,
android.R.layout.simple_spinner_item, gameminutes);
answertime = (Spinner) findViewById(R.id.s_answertime);
answertime.setAdapter(adapter);
answertime.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
I am getting confused trying to put in more than 1 spinner. Do I share the array adapter, or do I create a new one for each? What about the onItemSelected? As you can see from my strings at the top, I want three spinners. How would I do this?
尝试放入 1 个以上的微调器时,我感到很困惑。我是共享阵列适配器,还是为每个适配器创建一个新的?onItemSelected 呢?正如您从顶部的字符串中看到的那样,我想要三个微调器。我该怎么做?
I am new to android, as you can tell. All help is appreciated- Lijap
如您所知,我是 android 新手。感谢所有帮助- Lijap
回答by K-ballo
You could share the adapter between different Spinner
s if they adapted the same information. Clearly each of your adapters need to adapt a different set of String
s, so you need to create an ArrayAdapter
for each Spinner
.
Spinner
如果它们适应相同的信息,您可以在不同的s之间共享适配器。显然,您的每个适配器都需要适应一组不同的String
s,因此您需要ArrayAdapter
为每个Spinner
.
A single OnItemSelectedListener
will work for the 3 Spinners
(as long as you set them). You can call getId()
on the AdapterView<?>
passed as an argument to know which Spinner
raised the event.
单个OnItemSelectedListener
将适用于 3 Spinners
(只要您设置它们)。你可以叫getId()
上AdapterView<?>
作为参数知道哪些传递Spinner
引发的事件。
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch(arg0.getId()){
case R.id.s_answertime:
break;
case ...
}
}
回答by Ram kiran
Check this one
检查这个
yearDropdown.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)
{
selectedyear = parentView.getSelectedItemPosition();
drpyear = yearDropdown.getSelectedItem().toString();
//your code here
}
public void onNothingSelected(AdapterView<?> parentView)
{
selectedyear = 0;
//return;
}
});
monthDropdown.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)
{
//your code here
}
public void onNothingSelected(AdapterView<?> parentView)
{
selectedmonth = 0;
//return;
}
});
dayDropdown.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)
{
//your code here
}
public void onNothingSelected(AdapterView<?> parentView)
{
selectedday = 0;
}
});
you need to create each adapter for every spinner.
您需要为每个微调器创建每个适配器。
adapterYear = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item);
yearDropdown.setAdapter(adapterYear);
adapterMonth = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item);
monthDropdown.setAdapter(adapterMonth);
adapterDays = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item);
dayDropdown.setAdapter(adapterDays);