【问题标题】:Android- Multiple SpinnersAndroid- 多个微调器
【发布时间】:2012-06-02 10:14:51
【问题描述】:

我有这个代码:

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

}
}

我在尝试放入超过 1 个微调器时感到困惑。我是共享阵列适配器,还是为每个适配器创建一个新的? onItemSelected 怎么样?正如您在顶部的字符串中看到的那样,我想要三个微调器。我该怎么做?

如您所知,我是 android 新手。感谢所有帮助-Lijap

【问题讨论】:

    标签: android android-layout android-widget spinner


    【解决方案1】:

    如果不同的Spinners 调整了相同的信息,您可以在它们之间共享适配器。显然,您的每个适配器都需要适配一组不同的Strings,因此您需要为每个Spinner 创建一个ArrayAdapter

    单个OnItemSelectedListener 将适用于3 个Spinners(只要您设置它们)。您可以在作为参数传递的AdapterView&lt;?&gt; 上调用getId(),以了解哪个Spinner 引发了事件。

    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        switch(arg0.getId()){
            case R.id.s_answertime:
                break;
            case ...
        }
    }
    

    【讨论】:

    • 还有一个不同的 onItemSelected?
    • 你拯救了我的一天,我在做 view.getId() 并破解了为什么它不起作用
    【解决方案2】:

    检查这个

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

    您需要为每个微调器创建每个适配器。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多