2017-04-19 10 views
0

こんにちは、私は、文字Cとアルファベット順で始まるfirebaseからデータを取得しようとしていますが、何もしません。ここで私のコードは助けてください。 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(); 
} 

を取得されたルートを取得するとき

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(); 

iは、参考として、[1] [firebaseドキュメント]を使用しますが、それは

を仕事を得るカント

スクリーンショット http://imgur.com/a/yrygr

+0

Firebaseデータのスクリーンショットを添付できますか? –

+0

@boonyakipitakスクリーンショットが追加されました –

答えて

0
あなたはこのように、それはまた Cで始まるデータについては Android

で動作するはず何かを行うことができますJava Adminのドキュメントによると

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

\uf8ffは、Unicodeの中で最も通常の文字の後にありますしたがって、クエリは、Cで始まるすべての値と一致する必要があります。

申し訳ありません申し訳ありませんが動作していない場合、私は個人的にそれを自分で試していませんでした。

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

.endAt()を追加するときに、誰かが必要としていれば解決しました。ありがとう

関連する問題