2

FirebaseのアンドロイドにあるAutoCompleteTextViewにデータのリストをロードするにはどうすればいいですか?FireComponentデータのリストからAutoCompleteTextViewをロードするにはどうすればよいですか?

私はそれを想像する方法

私はFirebaseRecyclerAdapterに似たものを使用してデータを取得し、ACTVにそのアダプタを設定します。例えば、私は、このデータがある場合:私は「Hakunaマタタ」と入力するとき

AutoComplete:{ 
    JKDJKADJKADFJAKD:{ 
     name:"Hakuna Matata , your orangeness -- I mean your highness, Mr. Trump!" 
    } 
    JDKIKSLAIJDKDIKA:{ 
     name:"Hakuna Matata! I ask not to take offense by the previous statement." 
    } 
} 

をACTVは、提案として、両方のステートメントを持つ必要があります。これには特別なFirebaseアダプタがありますか?

+0

は、ここに私のデータベースです。 'startAt'と' endAt'を使ったFirebaseのクエリは可能性が高い方法です。 startAt()は指定されたキーからすべての値を取得するように、https://firebase.google.com/docs/database/android/retrieve-data#filtering_data –

+0

@FrankvanPuffelenを参照してください。 –

+0

@FrankvanPuffelenあなたは私を例にリンクさせることができますか? –

答えて

6

調査の6時間後、私はついにthis linkのおかげでそれをしました。 enter image description here は私が必要なものを達成するために、次のコードのコメントに従ってください:あなたはあなた自身のためのコードを記述する必要があります

//Nothing special, create database reference. 
    DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
    //Create a new ArrayAdapter with your context and the simple layout for the dropdown menu provided by Android 
    final ArrayAdapter<String> autoComplete = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1); 
    //Child the root before all the push() keys are found and add a ValueEventListener() 
    database.child("AutoCompleteOptions").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      //Basically, this says "For each DataSnapshot *Data* in dataSnapshot, do what's inside the method. 
      for (DataSnapshot suggestionSnapshot : dataSnapshot.getChildren()){ 
       //Get the suggestion by childing the key of the string you want to get. 
       String suggestion = suggestionSnapshot.child("suggestion").getValue(String.class); 
       //Add the retrieved string to the list 
       autoComplete.add(suggestion); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    AutoCompleteTextView ACTV= (AutoCompleteTextView)findViewById(R.id.actv); 
    ACTV.setAdapter(autoComplete); 
+0

効率的なソリューションと時間をいただきありがとうございます。あなたは私を6時間救った! Firebaseの 'AutoCompleteOptions'も更新している場合は、' public void onDataChange(DataSnapshot dataSnapshot){... 'の直後に' autoComplete.clear(); 'を追加するといいでしょう。それ以外の場合は、リスナーが再度起動されたときに、結果が既に入力されたArrayAdapterに追加され、以前にArrayAdapterに追加されたすべてのエントリが倍になります。 –

+0

@ChristopherMills大歓迎です! –

関連する問題