android - 所选项目上的 Android 微调器不起作用?
问题描述
所以伙计们,我正在尝试将OnItemSelectedListener实现到我的微调器。数据从火力库中检索并添加到数组列表中,并且我添加到adatper中的数组列表
//spinner stufff
//variables:
Spinner schoolNamesSpinner;
DatabaseReference databaseReference;
ArrayList<String> instituteNames;
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<>(studentsLogIn.this,
android.R.layout.simple_spinner_dropdown_item, instituteNames);
schoolNamesSpinner.setAdapter(adapter);
adapter.notifyDataSetChanged();
**// populating selector;**
populatingSelecto();
填充微调器 在此处输入图像描述
**// populating selector**
private void populatingSelecto() {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
for (DataSnapshot ids : snapshot.getChildren()) {
uniqIds.add(ids.getKey());
}
for (int i = 0; i < uniqIds.size(); i++) {
databaseReference.child(uniqIds.get(i)).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String name = snapshot.child("INSTITUTE").child("institutionName").
getValue().toString();
instituteNames.add(name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
} else {
dialogboxMeathod(studentsLogIn.this, "No Institutes on the Record");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
因此,在所选项目上,我试图显示所选项目的文本,但它不起作用
schoolNamesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(studentsLogIn.this, instituteNames.get(position), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
解决方案
我必须在添加东西后通知适配器
for (int i = 0; i < uniqIds.size(); i++) {
databaseReference.child(uniqIds.get(i)).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String name = snapshot.child("INSTITUTE").child("institutionName").getValue().toString();
instituteNames.add(name);
// here i have to add the adapter.notifydatachanged
}
}
}
}
推荐阅读
- r - R 在嵌套数据集中添加一列
- scala - OperationTimeout /WriteTimeOut on Await Duration.Inf
- javascript - VueJS + Quasar 框架 + 谷歌地图 JS API
- reactjs - setupTests.js 未在 CRA 反应应用程序中自动加载
- ios - 如何在Swift中的BezierPath之后为imageView的点1到2和点2到3设置不同的animation.duration时间?
- amazon-web-services - 如何在我的反应原生应用程序中覆盖 AmplifyTheme
- jenkins-pipeline - Jenkins 管道在 UI 中工作,但不适用于 SCM
- elasticsearch - 带有过滤条件和字符串搜索的 Elasticsearch bool 查询返回不一致的结果
- presto - 在 Presto 中添加两个地图
- tooltip - Amcharts 4,xychart,限制工具提示的数量并将信息组合在一个工具提示中