值未在微调器中正确显示 Android

Value not displaying Correctly in Spinner Android

我有一个微调器,我想在其中从 Firebase 数据库中获取价值。我尝试了我所知道的,因为我是 Android 的新手,但 Spinner 中的价值并没有像我希望的那样出现。

当我直接传递字符串数组时,它正常运行,但是当用 Firebase data.Here 填充的字符串数组也是我的数据库时,它就会出现问题。

final String[] batcht = {"1903f","343","33323"};

XML

    <Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/stubatch"
    />

JAVA

public class Student extends AppCompatActivity {
 DatabaseReference ref;
 Spinner spinner;
 List<String> store;
 String[] batchlist;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_student);
   spinner = findViewById(R.id.stubatch);

    store =new ArrayList<>();

    Student_ID =getIntent().getStringExtra("Student_Id");
    ref = FirebaseDatabase.getInstance().getReference("Batch");

    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot batches : dataSnapshot.getChildren()){
                    String a= batches.getValue().toString();
                    store.add(a);
                }

            batchlist = new String[store.size()];

            for(int i=0;i<batchlist.length;i++){
                batchlist[i]=store.get(i);

            }

            ArrayAdapter<String> adapter = new ArrayAdapter<String> 
            (getApplicationContext(),android.R.layout.simple_spinner_item,batchlist);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
            spinner.setAdapter(adapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}}

我不知道我做错了什么。

当您获取数据时,您犯了一些错误。您不是根据您的插入技术获取的,试试这个 在数据快照的 for 循环中使用此代码:

String a = batches.child("1710f").getValue().toString()

通过执行此操作,只有带有 the 1710f 键的数据才会被选为您已列出所有键的其他值。 希望这会锻炼身体

实际上问题是我在 Firebase 中存储数据的方式不对。

  save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String batchdata = edit.getText().toString();
            ref = FirebaseDatabase.getInstance().getReference("Batch").child(User_Id);

            ref.child(batchdata).setValue(batchdata);

            Toast.makeText(getApplicationContext(), "Successful", Toast.LENGTH_SHORT).show();

            Intent i  = new Intent(getApplicationContext(),Faculty.class);
            i.putExtra("User_Id",User_Id);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
        }
    });

我只需要删除 .child(User_Id);.

现在一切正常。