android-studio - 如何让以下信息显示在微调器或下拉框中
问题描述
我有以下代码,我可以从 firebase 检索信息,但我如何让用户通过下拉框选择每个医疗诊所?然后,这将使用户进入下一步,为该特定诊所撰写评论:
public class ListViewActivity extends AppCompatActivity {
private ListView listview;
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
listview = findViewById(R.id.listView);
edit = findViewById(R.id.edit);
final ArrayList<String> list = new ArrayList<>();
final ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, list);
listview.setAdapter(adapter);
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Medical Clinic");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Information info = snapshot.getValue(Information.class);
assert info != null;
String txt = info.getName() + " : " + info.getAddress() + " :" + info.getPhone_No() + " : " + info.getPostcode();
list.add(txt);
// list.add(snapshot.getValue().toString());
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
解决方案
不使用 listView,而是使用微调器
Spinner spinner;
List<String> list = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.spinner_custom_layout, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// your code
}
@Override
public void onNothingSelected(AdapterView<?> parent) { }
});
更新列表和通知适配器的方式与您对列表视图适配器所做的相同,使用list.add(txt);
andadapter.notifyDataSetChanged();
spinner_custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/standard_spinner_format"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#000000">
</TextView>
布局文件 simple_spinner_dropdown_item.xml 已经在库中,您不必创建它
完整的java代码
public class ListViewActivity extends AppCompatActivity {
private Spinner spinner;
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
listview = findViewById(R.id.listView);
edit = findViewById(R.id.edit);
List<String> list = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_custom_layout, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// your code
}
@Override
public void onNothingSelected(AdapterView<?> parent) { }
});
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Medical Clinic");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Information info = snapshot.getValue(Information.class);
assert info != null;
String txt = info.getName() + " : " + info.getAddress() + " :" + info.getPhone_No() + " : " + info.getPostcode();
list.add(txt);
// list.add(snapshot.getValue().toString());
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
推荐阅读
- ruby - Rspec 显示未定义的方法,但对象在同一块中可用
- hashmap - HashMap return the lasted record if it has multiple records with the same key, but different value
- javascript - script triggers owner case when triggerd by editor
- javascript - Move existing DIV to dynamically created iFrame no jQuery
- swift - I get this error " Use of unresolved identifier 'countElement'". I am new to swift, so I cant figure whats wrong
- python-3.x - rasa-core 操作仅返回空数组
- java - 随机 sqrt 字符串生成
- yaml - ScannerError:此处不允许映射值
- hyperledger-fabric - 如何在对等 cli 中调用不同合约的方法
- python - 在 pandas.Series.reindex(, copy=True) 的这种用法中,线程不安全的根源是什么?