【问题标题】:How to make a item listview equal to name in Firebase?如何使项目列表视图等于 Firebase 中的名称?
【发布时间】:2017-09-21 12:21:58
【问题描述】:

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

示例:餐厅将显示

  • 吉奇
  • 嗯嗯嗯

当我点击 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");
        }
    });
}

}

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    我知道如何做到这一点的唯一方法是捕获所有键,然后当您单击列表项时调用保存该键和值的适当位置。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多