2017-04-19 62 views
0

嗨,大家好我試着去檢索火力數據,只有先從字母C和按字母排序,但是當我運行程序它什麼都不做,我可以檢索所有房間,沒有問題火力點的數據。這裏是我的代碼請幫助。獲取與Android和排序孩子

public class RoomsActivity extends AppCompatActivity 
{ 
    private Button add_room; 
    private EditText room_name; 

    private ListView listView; 
    private ArrayAdapter<String> arrayAdapter; 
    private ArrayList<String> list_of_rooms = new ArrayList<>(); 
    private String name; 
    private DatabaseReference root = FirebaseDatabase.getInstance().getReference().getRoot(); 
    private String user_name; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_rooms); 

     name = getIntent().getExtras().get("user_name").toString(); 
     getWindow().setBackgroundDrawableResource(R.drawable.back2); 
     add_room = (Button) findViewById(R.id.btn_add_room); 
     room_name = (EditText) findViewById(R.id.room_name_edittext); 
     listView = (ListView) findViewById(R.id.listView); 

     arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list_of_rooms); 

     listView.setAdapter(arrayAdapter); 

     add_room.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Map<String,Object> map = new HashMap<String, Object>(); 
       map.put(room_name.getText().toString(),""); 
       root.updateChildren(map); 
      } 
     }); 

     root.child("room_name").startAt("C").orderByKey().addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       Set<String> set = new HashSet<String>(); 
       Iterator i = dataSnapshot.getChildren().iterator(); 

       while (i.hasNext()){ 
        set.add(((DataSnapshot)i.next()).getKey()); 
       } 

       list_of_rooms.clear(); 
       list_of_rooms.addAll(set); 

       arrayAdapter.notifyDataSetChanged(); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

       Intent intent = new Intent(getApplicationContext(),Chat_Room.class); 
       intent.putExtra("room_name",((TextView)view).getText().toString()); 
       intent.putExtra("user_name",name); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

我的數據庫

private DatabaseReference root = FirebaseDatabase.getInstance().getReference().getRoot(); 

當II得到的所有數據被檢索

root.orderByKey().addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 

    Set<String> set = new HashSet<String>(); 
    Iterator i = dataSnapshot.getChildren().iterator(); 

    while (i.hasNext()){ 
     set.add(((DataSnapshot)i.next()).getKey()); 
    } 

    list_of_rooms.clear(); 
    list_of_rooms.addAll(set); 

    arrayAdapter.notifyDataSetChanged(); 
} 

根我用[火力文檔] [1]作爲參考,但不能得到它的工作

截圖 http://imgur.com/a/yrygr

+0

你能附上您的火力地堡數據的截圖? –

+0

@boonyakipitak截圖添加 –

回答

0

Java Admin的文檔,你可以做這樣的事情,也應該Android

對於開始C數據工作,

dinosaursRef.orderByKey().startAt("C").endAt("C\uf8ff")

\uf8ff是後的Unicode最普通的人物,所以應該查詢匹配以一個C開始的所有值。

很抱歉,如果它不能正常工作,我沒有親自嘗試一下自己。

0
root.orderByKey().startAt("C").endAt("C\uf8ff").addValueEventListener(new ValueEventListener() { 

它在加入.endAt()這個解決方案時工作,如果有人需要它。由於