英文:
Android: How do I send a Spinner value to my UserHelper object?
问题
You can send the text value to the UserHelper object by making it a member variable of your MainActivity class. Here's the modified code to achieve this:
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    // ... (other member variables)
    String comment; // Declare 'comment' as a member variable
    // ... (rest of your code)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        name = findViewById(R.id.editTextTextPersonName2);
        stylistSelection = findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        stylistSelection.setAdapter(adapter);
        stylistSelection.setOnItemSelectedListener(this); // Use setOnItemSelectedListener instead of setOnItemClickListener
        // ... (rest of your code)
    }
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        comment = adapterView.getItemAtPosition(i).toString(); // Set the 'comment' variable when an item is selected in the spinner
    }
    // ... (rest of your code)
}
In this code, I've declared comment as a member variable at the beginning of the MainActivity class. Then, in the onItemSelected method, I assign the selected spinner item to the comment variable. Now, you can use this comment variable when creating the UserHelper object later in your code.
英文:
I have created an app that collects information in the form of rating bar and a spinner. I want to send the ratings and the spinner item selected to my UserHelper object for Firebase realtime database.
Here is the code:
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    EditText name;
    Spinner stylistSelection;
    RatingBar hygieneRating;
    RatingBar serviceRating;
    RatingBar totalRating;
    Button submit;
    FirebaseDatabase rootNode;
    DatabaseReference reference;
    Handler handler = new Handler();
    Intent intent;
    String comment;
    public void displayComment() {
        intent = new Intent(getApplicationContext(), ratings.class);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        name = findViewById(R.id.editTextTextPersonName2);
        stylistSelection = findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        stylistSelection.setAdapter(adapter);
        stylistSelection.setOnItemClickListener(this);
        hygieneRating = findViewById(R.id.ratingBar3);
        totalRating = findViewById(R.id.ratingBar2);
        serviceRating = findViewById(R.id.ratingBar);
        submit = findViewById(R.id.button);
        final String stylistName = stylistSelection.getSelectedItem().toString();
        final String hygiene = String.valueOf(hygieneRating.getRating());
        final String service = String.valueOf(serviceRating.getRating());
        final String overall = String.valueOf(totalRating.getRating());
        class OnClickListener implements View.OnClickListener {
            @Override
            public void onClick(View view) {
                if ((name.length() == 0) && stylistName.isEmpty())  {
                    name.setError("Please enter your full name.");
                    ((TextView)stylistSelection.getSelectedView()).setError("Please select a stylist.");
                }
                else {
                    name.setError(null);
                    ((TextView)stylistSelection.getSelectedView()).setError(null);
                    rootNode = FirebaseDatabase.getInstance();
                    reference = rootNode.getReference().child("Users");
                    String customer = name.getText().toString();
                    int hygieneScore = Integer.parseInt(hygiene);
                    int serviceScore = Integer.parseInt(service);
                    int totalScore = Integer.parseInt(overall);
                    UserHelper helper = new UserHelper(customer, text, hygieneScore, serviceScore, totalScore, comment); // Need the spinner value here
                    reference.push().setValue(helper);
                    Toast.makeText(MainActivity.this, "Thanks for your feedback!", Toast.LENGTH_SHORT).show();
                    Runnable runnable = new Runnable() {
                        @Override
                        public void run() {
                            displayComment();
                        }
                    };
                    handler.postDelayed(runnable, 3000);
                }
            }
        }
    }
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        String text = adapterView.getItemAtPosition(i).toString();
    }
    
    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
    }
}
My question how do I send this text value to the UserHelper object above.
Thanks for any help in advance.
专注分享java语言的经验与见解,让所有开发者获益!



评论