简体   繁体   English

调用Spinner onitemselect侦听器

[英]Invoking a Spinner onitemselect listener

I'm really close to getting my spinner to do something when an item is selected. 选择一个项目时,我真的很接近让我的微调器做一些事情。 I just can't figure out how to set up the onitemselectedlistener correctly. 我只是不知道如何正确设置onitemselectedlistener。 I think my problem is not knowing how to pass the arguments to my onItemSelected method. 我认为我的问题是不知道如何将参数传递给我的onItemSelected方法。 Help to get the final part of this working is very much appreciated. 非常感谢您获得此工作的最后部分的帮助。

Here is the code: 这是代码:

public class MainActivity extends AppCompatActivity {



    Spinner spinner;
    String[][] testScoreList = new String[3][3];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //Load test scores into arraylist
        nameArrayListMethod();
        spinner.setOnItemSelectedListener(onItemSelected());


    }

    //This method loads test scores into an array and populates spinner
    public void nameArrayListMethod (){

        InputStreamReader InputSR = null;
        BufferedReader BufferedRdr = null;
        String thisLine = null;

        AssetManager am = getAssets();
        String[] SpinnerNames = new String[3];

        try {
            InputSR = new InputStreamReader(am.open("scoresdata/test_scores.txt"));
            BufferedRdr = new BufferedReader(InputSR);

            // open input stream test_scores for reading purpose.

            int i = 0;
            while ((thisLine = BufferedRdr.readLine()) != null) {
                 //System.out.println(thisLine);

                String[] parts = thisLine.split(" ");
                testScoreList[i][0] = parts[0];
                testScoreList[i][1] = parts[1];
                testScoreList[i][2] = parts[2];

                SpinnerNames[i] = testScoreList[i][0]; //Extract first column for spinner
                i = i +1;
            }
            BufferedRdr.close();
            InputSR.close();

        } catch (Exception e) {
            e.printStackTrace();

        }

        spinner= (Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, SpinnerNames);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerArrayAdapter);

    }

    public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        Toast.makeText(parent.getContext(),
                "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();
    }

}

It looks like: 看起来像:

spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(parent.getContext(),
                    "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                    Toast.LENGTH_SHORT).show();
        }
    });

Try this 尝试这个

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

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

        }
    });

You can add data Tow ways 您可以添加数据拖曳方式

Method 1 方法1

if you have a simple one line data the use this method. 如果您有简单的一行数据,请使用此方法。

step 1 第1步

Add string array in string.xml file 在string.xml文件中添加字符串数组

 <string-array name="ArrayName">
        <item>A</item>
        <item>B</item>
        <item>C</item>
        <item>D</item>
        <item>E</item>
        <item>F</item>
    </string-array>

add android:entries="@string/ArrayName" in your xml spinner component 在您的xml Spinner组件中添加android:entries="@string/ArrayName"

and get selected value using String text = spinner.getSelectedItem().toString(); 并使用String text = spinner.getSelectedItem().toString();获得所选值String text = spinner.getSelectedItem().toString();

Spinner.setOnItemSelectedListener(new OnItemSelectedListener() 
{
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) 
    {
        Toast.makeText(topThis, "Value = "+spinner.getSelectedItem().toString();, Toast.LENGTH_LONG).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) 
    {
        Toast.makeText(topThis, "herf", Toast.LENGTH_LONG).show();
    }
});

Method 2 方法2

for using custom adapter HERE is complete tutorial 使用自定义适配器的位置是完全教程

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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