根据微调器选择填充字段 (firestore)
Filling in fields based on spinner selection (firestore)
我是编程新手,需要帮助
我学会了如何将集合中的数据添加到微调器,但我找不到如何在任何地方填充它的信息,例如,基于微调器位置选择的 TextView 字段。
消防站:
[Firestore][1]
public class UserActivity extends AppCompatActivity {
private TextView tvName, tvCourse, tvGender, tvDescription;
private ImageButton AddBtn, logoutBtn;
private Spinner spListStudent;
private Button btnNextActivity, btnThreeActivity ;
private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private DatabaseReference ref1;
private FirebaseFirestore firebaseFirestore;
private int positionOfSelectedDataFromSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
tvName = findViewById(R.id.tvName);
tvCourse = findViewById(R.id.tvCourse);
tvGender = findViewById(R.id.tvGender);
AddBtn = findViewById(R.id.AddBtn);
logoutBtn = findViewById(R.id.logoutBtn);
spListStudent = findViewById(R.id.spListStudent);
btnNextActivity = findViewById(R.id.btnNextActivity);
btnThreeActivity = findViewById(R.id.btnThreeActivity);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please wait...");
progressDialog.setCanceledOnTouchOutside(false);
firebaseAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
ref1 = FirebaseDatabase.getInstance().getReference("Users");
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
firebaseAuth.signOut();
checkUser();
}
});
AddBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(UserActivity.this, AddCollectionFirestore.class));
}
});
addStudentToSpinner();
}
private void checkUser() {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user==null) {
startActivity(new Intent(UserActivity.this, LoginActivity.class));
finish();
} else {
}
}
private void addStudentToSpinner () {
CollectionReference subjectsRef = firebaseFirestore.collection("accColl").document("usersCollection")
.collection(firebaseAuth.getUid()).document("coll3").collection("students");
List<String> subjects = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, subjects);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spListStudent.setAdapter(adapter);
subjectsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
String subject = document.getString("nameStudent");
subjects.add(subject);
}
adapter.notifyDataSetChanged();
}
spListStudent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getSelectedItem().toString();
Toast.makeText(getApplicationContext(), "Item Selected "+position +
" " + item, Toast.LENGTH_SHORT).show();
// Variant1
subjectsRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot qS1 : task.getResult()) {
String stDescr = qS1.getData().get("descriptionStudent").toString();
tvCourse.setText(stDescr);
}
}
}
});
// Variant2
Query q2 = subjectsRef.orderBy("nameStudent");
q2.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot sn1 : task.getResult()) {
String stName = sn1.getData().get("nameStudent").toString();
tvName.setText(stName);
}
} else {
}
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
});
请帮忙
[1]: https://i.stack.imgur.com/RPjum.png
看来我找到了问题的解决方案。现在,当您更改微调器的位置时,textView 中的数据会发生变化
public class UserActivity5 extends AppCompatActivity {
private TextView tvName, tvCourse, tvGender, tvDescription;
private Spinner spListStudent;
private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private DatabaseReference ref1;
private FirebaseFirestore firebaseFirestore;
private DocumentReference dR1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user5);
tvName = findViewById(R.id.tvName);
tvCourse = findViewById(R.id.tvCourse);
tvGender = findViewById(R.id.tvGender);
tvDescription = findViewById(R.id.tvDescription);
spListStudent = findViewById(R.id.spListStudent);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please wait...");
progressDialog.setCanceledOnTouchOutside(false);
firebaseAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
dR1 = firebaseFirestore
.collection("accColl")
.document("usersCollection")
.collection(firebaseAuth.getUid())
.document("coll3");
ref1 = FirebaseDatabase.getInstance().getReference("Users");
addStudentToSpinner();
}
private void addStudentToSpinner () {
CollectionReference subjectsRef = firebaseFirestore
.collection("accColl")
.document("usersCollection")
.collection(firebaseAuth.getUid())
.document("coll3")
.collection("students");
List<String> subjects = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, subjects);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spListStudent.setAdapter(adapter);
subjectsRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (DocumentSnapshot document : queryDocumentSnapshots.getDocuments()) {
String subject = document.getString("nameStudent");
subjects.add(subject);
}
adapter.notifyDataSetChanged();
spListStudent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getSelectedItem().toString();
subjectsRef
.whereEqualTo("nameStudent", item)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
String stName = document.getData().get("nameStudent").toString();
String stDescr = document.getData().get("descriptionStudent").toString();
String stCourse = document.getData().get("courseStudent").toString();
String stPhil = document.getData().get("philosophy").toString();
tvName.setText(stName);
tvGender.setText(stDescr);
tvCourse.setText(stCourse);
double philosophyParse = Double.parseDouble(stPhil);
NumberFormat nf = new DecimalFormat("##.#####");
String phi = String.format(nf.format(philosophyParse));
tvDescription.setText(phi);
}
}
else {
}
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
});
}
}
我是编程新手,需要帮助 我学会了如何将集合中的数据添加到微调器,但我找不到如何在任何地方填充它的信息,例如,基于微调器位置选择的 TextView 字段。 消防站: [Firestore][1]
public class UserActivity extends AppCompatActivity {
private TextView tvName, tvCourse, tvGender, tvDescription;
private ImageButton AddBtn, logoutBtn;
private Spinner spListStudent;
private Button btnNextActivity, btnThreeActivity ;
private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private DatabaseReference ref1;
private FirebaseFirestore firebaseFirestore;
private int positionOfSelectedDataFromSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
tvName = findViewById(R.id.tvName);
tvCourse = findViewById(R.id.tvCourse);
tvGender = findViewById(R.id.tvGender);
AddBtn = findViewById(R.id.AddBtn);
logoutBtn = findViewById(R.id.logoutBtn);
spListStudent = findViewById(R.id.spListStudent);
btnNextActivity = findViewById(R.id.btnNextActivity);
btnThreeActivity = findViewById(R.id.btnThreeActivity);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please wait...");
progressDialog.setCanceledOnTouchOutside(false);
firebaseAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
ref1 = FirebaseDatabase.getInstance().getReference("Users");
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
firebaseAuth.signOut();
checkUser();
}
});
AddBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(UserActivity.this, AddCollectionFirestore.class));
}
});
addStudentToSpinner();
}
private void checkUser() {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user==null) {
startActivity(new Intent(UserActivity.this, LoginActivity.class));
finish();
} else {
}
}
private void addStudentToSpinner () {
CollectionReference subjectsRef = firebaseFirestore.collection("accColl").document("usersCollection")
.collection(firebaseAuth.getUid()).document("coll3").collection("students");
List<String> subjects = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, subjects);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spListStudent.setAdapter(adapter);
subjectsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
String subject = document.getString("nameStudent");
subjects.add(subject);
}
adapter.notifyDataSetChanged();
}
spListStudent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getSelectedItem().toString();
Toast.makeText(getApplicationContext(), "Item Selected "+position +
" " + item, Toast.LENGTH_SHORT).show();
// Variant1
subjectsRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot qS1 : task.getResult()) {
String stDescr = qS1.getData().get("descriptionStudent").toString();
tvCourse.setText(stDescr);
}
}
}
});
// Variant2
Query q2 = subjectsRef.orderBy("nameStudent");
q2.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot sn1 : task.getResult()) {
String stName = sn1.getData().get("nameStudent").toString();
tvName.setText(stName);
}
} else {
}
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
});
请帮忙 [1]: https://i.stack.imgur.com/RPjum.png
看来我找到了问题的解决方案。现在,当您更改微调器的位置时,textView 中的数据会发生变化
public class UserActivity5 extends AppCompatActivity {
private TextView tvName, tvCourse, tvGender, tvDescription;
private Spinner spListStudent;
private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private DatabaseReference ref1;
private FirebaseFirestore firebaseFirestore;
private DocumentReference dR1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user5);
tvName = findViewById(R.id.tvName);
tvCourse = findViewById(R.id.tvCourse);
tvGender = findViewById(R.id.tvGender);
tvDescription = findViewById(R.id.tvDescription);
spListStudent = findViewById(R.id.spListStudent);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please wait...");
progressDialog.setCanceledOnTouchOutside(false);
firebaseAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
dR1 = firebaseFirestore
.collection("accColl")
.document("usersCollection")
.collection(firebaseAuth.getUid())
.document("coll3");
ref1 = FirebaseDatabase.getInstance().getReference("Users");
addStudentToSpinner();
}
private void addStudentToSpinner () {
CollectionReference subjectsRef = firebaseFirestore
.collection("accColl")
.document("usersCollection")
.collection(firebaseAuth.getUid())
.document("coll3")
.collection("students");
List<String> subjects = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, subjects);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spListStudent.setAdapter(adapter);
subjectsRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (DocumentSnapshot document : queryDocumentSnapshots.getDocuments()) {
String subject = document.getString("nameStudent");
subjects.add(subject);
}
adapter.notifyDataSetChanged();
spListStudent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getSelectedItem().toString();
subjectsRef
.whereEqualTo("nameStudent", item)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
String stName = document.getData().get("nameStudent").toString();
String stDescr = document.getData().get("descriptionStudent").toString();
String stCourse = document.getData().get("courseStudent").toString();
String stPhil = document.getData().get("philosophy").toString();
tvName.setText(stName);
tvGender.setText(stDescr);
tvCourse.setText(stCourse);
double philosophyParse = Double.parseDouble(stPhil);
NumberFormat nf = new DecimalFormat("##.#####");
String phi = String.format(nf.format(philosophyParse));
tvDescription.setText(phi);
}
}
else {
}
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
});
}
}