如何使项目列表视图与Firebase中的名称相同?

时间:2017-09-20 16:30:19

标签: java android firebase firebase-realtime-database

我想打印一个列表视图,当我点击一个项目时,转到一个等于firebase数据库中的值的新列表视图

示例:餐厅将显示

  • Guich
  • 荫荫

当我点击Guich会显示

  • 披萨
  • 汉堡

Firebase image

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");
        }
    });
}

}

1 个答案:

答案 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快照。