简体   繁体   English

如何将字符串值设置为从 android 中的 Firestore 数据库中检索到的微调器?

[英]How to set string value to spinner retrieved from Firestore database in android?

I have retrieved the value of gender from the firestore database which is a string.我已经从作为字符串的 firestore 数据库中检索了性别的值。

Now to set this value to the Spinner of the gender so that user can check and update the value on its own.现在将此值设置为性别的 Spinner,以便用户可以自行检查和更新该值。

The retrieved value should show, but I am unable to convert the string value and set it to the spinner in android.检索到的值应该显示,但我无法转换字符串值并将其设置为 android 中的微调器。

I tried searching for similar examples but no good yet.我尝试搜索类似的示例,但还没有好。

    public class EditProfile extends AppCompatActivity {

        private String Fullname, Username, SpinnerC, Gender, DateOfBirth;
        private CircleImageView userImage;
        private Button updateProfileDetails;
        private static final String TAG = "DocSnippets";

        private EditText uFullname,uUsername, uDateOfBirth;
        private Uri mUri;
        private StorageReference storageReference;
        private Spinner uSpinnerC, uGender;
        private String date, tokenId;

        private String mUserId;

        private int REQ_CODE = 100, PERMISSION_CODE = 200;

        private DocumentReference mUserRef;

        private String permissions[] = {
                Manifest.permission.READ_EXTERNAL_STORAGE
        };


        private FirebaseAuth mAuth;
        private FirebaseFirestore db;

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

            mAuth = FirebaseAuth.getInstance();
            db = FirebaseFirestore.getInstance();

            mUserId = mAuth.getCurrentUser().getUid();
            mUserRef = FirebaseFirestore.getInstance().collection("users").document(mUserId);
            storageReference = FirebaseStorage.getInstance().getReference().child("profile_pic");


            uFullname = (EditText) findViewById(R.id.register_etName1);
            uUsername = (EditText) findViewById(R.id.register_etUserName1);

            userImage = (CircleImageView) findViewById(R.id.setupprofile_image1);

            uDateOfBirth = (EditText) findViewById(R.id.register_etDateOfBirth);

            uGender = findViewById(R.id.register_etGender1);
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                    R.array.gender, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            uGender.setAdapter(adapter);

            uSpinnerC = findViewById(R.id.register_spinnerC1);
            ArrayAdapter<CharSequence> adapterC = ArrayAdapter.createFromResource(this,
                    R.array.numbers, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            uSpinnerC.setAdapter(adapterC);


            requestFunction();

            userImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent();
                    intent.setAction(Intent.ACTION_PICK);
                    intent.setType("image/*");
                    startActivityForResult(intent, REQ_CODE);

                }
            });

            uDateOfBirth.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showDateDialog();
                }
            });

            getUserProfileDetails();

            updateProfileDetails.setOnClickListener(
                    new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    checkDataAndSave();
                }
            });

        }


        private void getUserProfileDetails(){


            mUserRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                    if (task.isSuccessful()) {
                        DocumentSnapshot document = task.getResult();
                        if (document.exists()) {

                            Log.d(TAG, "DocumentSnapshot data: " + document.getData());

                            String username = (String) document.getString("username");
                            String gender = (String) document.getString("gender");
                            String dateOfBirth = (String) document.getString("dateOfBirth");
                            String email = (String) document.getString("email");
                            String fullname = (String) document.getString("fullname");
                            String spinnerC = (String) document.getString("spinnerC");
                            String profilepic = (String) document.getString("profile_pic");


                            uUsername.setText(username);
                            uGender.setText(gender);
                            uDateOfBirth.setText(dateOfBirth);
                            uSpinnerC.setText(spinnerC);

                            Picasso.get()
                                    .load(profilepic)
                                    .resize(50, 50)
                                    .centerCrop()
                                    .into(userImage);








                        } else {
                            Log.d(TAG, "No such document");
                        }
                    }


                }
            });
        }

        public void showDateDialog() {

            Calendar cal = Calendar.getInstance();
            final int day = cal.get(Calendar.DAY_OF_MONTH);
            int month = cal.get(Calendar.MONTH) ;
            int year = cal.get(Calendar.YEAR);

            DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                    if (day < 10 && monthOfYear < 10)
                        date = "0" + dayOfMonth + "/0" + monthOfYear + "/" + year;


                    else if (day < 10 && monthOfYear > 10)
                        date = "0" + dayOfMonth + "/" + monthOfYear + "/" + year;

                    else if (day > 10 && monthOfYear < 10)
                        date = dayOfMonth + "/0" + monthOfYear + "/" + year;

                    else
                        date = dayOfMonth + "/" + monthOfYear + "/" + year;

                    uDateOfBirth.setText(date);

                }
            };

            DatePickerDialog dpDialog = new DatePickerDialog(this, listener, year, month, day);
            dpDialog.show();

        }


        private void checkDataAndSave() {

            String fullName = uFullname.getText().toString().trim();
            String username = uUsername.getText().toString().trim();
            String genderselection = uGender.getSelectedItem().toString();
            String dateOfBirthSelected = uDateOfBirth.getText().toString();
            String spinnerC = uSpinnerC.getSelectedItem().toString();
            if (mUri == null){
                Toast.makeText(this, "Please Select Image", Toast.LENGTH_SHORT).show();
                return;
            }
            if (fullName.isEmpty()){
                Toast.makeText(this, "Please enter your Name", Toast.LENGTH_SHORT).show();
                return;
            }

            if (username.isEmpty()){
                Toast.makeText(this, "Please enter your User Name", Toast.LENGTH_SHORT).show();
                return;
            }

            if (genderselection.isEmpty()){
                Toast.makeText(this, "Please Select the Gender", Toast.LENGTH_SHORT).show();
                return;
            }
            if (spinnerC.isEmpty()){
                Toast.makeText(this, "Please enter the value", Toast.LENGTH_SHORT).show();
                return;
            }
            if (dateOfBirthSelected.isEmpty()){
                Toast.makeText(this, "Please Enter the Date of Birth", Toast.LENGTH_SHORT).show();
                return;
            }

            else{

                uploadImage(fullName, username, genderselection, dateOfBirthSelected, spinnerC);

            }

        }

        private void uploadImage(final String username, final String fullName, final String genderselection, final String dateOfBirthSelected, final String spinnerC) {
            UploadTask task = storageReference.child(mUserId).putFile(mUri);
            task.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                    if(task.isSuccessful()){
                        task.getResult().getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                String imageUrl = uri.toString();
                                saveData(username, fullName, imageUrl, genderselection, dateOfBirthSelected, spinnerC);

                            }
                        });
                    }
                    else{
                        Toast.makeText(getApplicationContext(), task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                    }
                }
            });



        }

        private void saveData(String username, String fullName, String imageUrl, String genderselection, String dateOfBirthSelected, String spinnerC) {

            Map<String, Object> map  = new HashMap<>();
            map.put("profile_pic", imageUrl);
            map.put("fullname", fullName);
            map.put("username", username);
            map.put("gender",genderselection);
            map.put("dateOfBirth", dateOfBirthSelected);
            map.put("spinnerC", spinnerC);
            map.put("tokenId", tokenId);
            map.put("userId", mAuth.getCurrentUser().getUid());


            //to save the current date
            // map.put("date", new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date()));

            mUserRef.update(map).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){

                        Toast.makeText(EditProfile.this, "Please Verify Your Email To Login", Toast.LENGTH_SHORT).show();
                        Intent toHomeActivity = new Intent(EditProfile.this, SignInActivity.class);
                        toHomeActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);

                        startActivity(toHomeActivity);
                        finish();
                    }
                    else{
                        Toast.makeText(getApplicationContext(), task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                    }

                }
            });
        }


    }

concern is regarding these lines in getUserProfileDetails() method关注的是 getUserProfileDetails() 方法中的这些行

    uGender.setText(gender);
    uSpinnerC.setText(spinnerC);

You can do that check if your spiner text in male then setSelection 1 or 0 like below您可以这样做检查您的微调器文本是否为男性,然后 setSelection 1 或 0 如下所示

String spinnerC = (String) document.getString("spinnerC");
if (spinnerC.equals("Male")){
  uSpinnerC.setSelection(0);
}else{
  uSpinnerC.setSelection(1); //female case
}

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

相关问题 netbeans:如何设置值以控制从数据库中检索到的值? - netbeans: how to set value to control which is retrieved from database? 如何在 Android 中没有 ArrayList 的微调器中设置字符串值? - How to set a String value in the spinner without ArrayList in Android? 如何从字符串列表中设置微调器中的值和文本? - How to set the value and text in a Spinner from a string list? 从数据库中获取值并在android Spinner中进行设置 - fetching value from database and setting it in android spinner 如何将从数据库中检索到的字符串值与程序中定义的字符串值进行比较 - how to compare String values retrieved from database to the String value Defined in Program 如何在android中的微调器中显示数据库值 - How to show database value in spinner in android 从数据库检索的值。 如何从Action类设置为Action Form和JSP? - Retrieved value from database. How to set to Action Form and JSP from Action class? 如何在微调器 android 中设置 boolean 值? - how to set boolean value in spinner android? 如何从firestore数据库显示十进制值到android studio - How to display decimal value from firestore database to android studio 将firestore集合检索到的字符串值解析为firestore集合 - parsing string value retrieved by firestore collection to firestore collection
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM