我想打印一个列表视图,当我点击一个项目时,转到一个等于firebase数据库中的值的新列表视图
示例:餐厅将显示
当我点击Guich会显示
public class RestaurantActivity extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference("Restaurant");
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_restaurant);
lv=(ListView) findViewById(R.id.listview);
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> areas = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
String value1 = String.valueOf(areaSnapshot.getValue());
areas.add(value1);
}
ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(PlateActivity.this,android.R.layout.simple_expandable_list_item_1, areas);
lv.setAdapter(areasAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("Error", "Something happened");
}
});
}
}
public class PlateActivity extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference("");
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plate);
lv=(ListView) findViewById(R.id.listview);
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> areas = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
String value1 = String.valueOf(areaSnapshot.getValue());
areas.add(value1);
}
ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(PlateActivity.this,android.R.layout.simple_expandable_list_item_1, areas);
lv.setAdapter(areasAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("Error", "Something happened");
}
});
}
}
答案 0 :(得分:0)
我知道如何操作的唯一方法是捕获所有键,然后当您单击列表项时,调用包含该键和值的适当位置。
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
String value1 = String.valueOf(areaSnapshot.getValue());
areas.add(value1);
//areaSnapshot.getKey.toString(); add to local array (keyArray)
}
在您的列表Listener
中执行以下操作:keyArray.get(position)
并使用此字符串在新列表中调用新的Firebase快照。