在微调器的 OnItemSelectedListener() 方法中使用 TextView 的 setText() 来设置每次选择项目时的文本。我不断收到错误


public class MainActivity extends Activity
{
    //Spinner used for Main menu of the App Where user selects their choice
    Spinner gSpinner,cSpinner,vSpinner;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_menu);
        gSpinner  = (Spinner) findViewById(R.id.spinner1);
        cSpinner = (Spinner) findViewById(R.id.spinner2);
        vSpinner   = (Spinner) findViewById(R.id.spinner3);
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        list.add("8");
        list.add("9");
        list.add("10");
        // Three SPINNERS created here*****************
        ArrayAdapter<String> spinnerArrayAdapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
        spinnerArrayAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        gSpinner.setAdapter(spinnerArrayAdapter1);
        gSpinner.setOnItemSelectedListener(onItemSelectedListener);
        ArrayAdapter<String> spinnerArrayAdapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
        spinnerArrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        cSpinner.setAdapter(spinnerArrayAdapter2);
        cSpinner.setOnItemSelectedListener(onItemSelectedListener1);
        ArrayAdapter<String> spinnerArrayAdapter3 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
        spinnerArrayAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        vSpinner.setAdapter(spinnerArrayAdapter3);
        vSpinner.setOnItemSelectedListener(onItemSelectedListener2);
        //Get the application's resources
        resources = getResources();
        try
        {
            //Load the file from the raw folder - don't forget to OMIT the extension
            output = LoadFile("esv", true);
        }
        catch (IOException e)
        {
            //Display an error toast message
            Toast toast = Toast.makeText(this, "File: not found!", Toast.LENGTH_LONG);
            toast.show();
        }

    }
    //LOAD FILES FROM THE APP "res/raw" FOLDER OR "assets" FOLDER
    public InputStream LoadFile(String fileName, boolean loadFromRawFolder) throws IOException
    {
        //Create a InputStream to read the file into
        InputStream iS;
        if (loadFromRawFolder)
        {
            //get the resource id from the file name
            int rID = resources.getIdentifier("com.example.john.semabible:raw/"+fileName, null, null);
            //get the file as a stream
            iS = resources.openRawResource(rID);
        }
        else
        {
            //get the file as a stream
            iS = resources.getAssets().open(fileName);
        }
        return iS;
    }

// the spinner's listener implementation - one for each spinner
// each implementation has a textview setText() that should update the text view // evrtime there is a change in the selection
    OnItemSelectedListener onItemSelectedListener =
            new OnItemSelectedListener(){

                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                                           int position, long id) {
                    operateXml(output);
                    LinearLayout mainLayout = (LinearLayout) findViewById(R.id.menu);
                    // inflate (create) another copy of our custom layout
                    LayoutInflater inflater = getLayoutInflater();
                    View myLayout = inflater.inflate(R.layout.main_menu, mainLayout, false);
                    // make changes to our custom layout and its subviews
                    TextView textView = (TextView)  myLayout.findViewById(R.id.tv);
                    textView.setText(vnText);  //gives error
                    // add our custom layout to the main layout
                    mainLayout.addView(myLayout);

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

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

                    operateXml(output);
                    LinearLayout mainLayout1 = (LinearLayout) findViewById(R.id.menu);
                    // inflate (create) another copy of our custom layout
                    LayoutInflater inflater = getLayoutInflater();
                    View myLayout = inflater.inflate(R.layout.main_menu, mainLayout1, false);
                    // make changes to our custom layout and its subviews
                    TextView textView = (TextView) myLayout.findViewById(R.id.tv);
                    textView.setText(vnText); //gives errors
                    // add our custom layout to the main layout
                    mainLayout1.addView(myLayout);
                    chapter = Integer.valueOf(parent.getItemAtPosition(position).toString());

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

    OnItemSelectedListener onItemSelectedListener2 =
            new OnItemSelectedListener(){

                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                                           int position, long id) {
                    operateXml(output);
                    LinearLayout mainLayout2 = (LinearLayout) findViewById(R.id.menu);
                    // inflate (create) another copy of our custom layout
                    LayoutInflater inflater = getLayoutInflater();
                    View myLayout = inflater.inflate(R.layout.main_menu, mainLayout2, false);
                    // make changes to our custom layout and its subviews
                    TextView textView = (TextView) myLayout.findViewById(R.id.tv);
                    textView.setText(vnText); //gives error
                    // add our custom layout to the main layout
                    mainLayout2.addView(myLayout);
                    verse = Integer.valueOf(parent.getItemAtPosition(position).toString());

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

取而代之的是:

textView.setText(vnText);

编写此代码:

textView.setText(parent.getItemAtPosition(position).toString());

取而代之的是:

OnItemSelectedListener onItemSelectedListener =
            new OnItemSelectedListener()

写这个:

OnItemSelectedListener onItemSelectedListener =
                new AdapterView.OnItemSelectedListener()

同样取而代之的是:

  @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                                           int position, long id)

传递每个微调器的相应适配器,而不是父级:例如,对于微调器,它应该是这样的:

  @Override
                public void onItemSelected(AdapterView<?> spinnerArrayAdapter1, View view,
                                           int position, long id)

最新更新