Sto tentando di popolare AutoCompleteTextView
utilizzando la mia personalizzata ArrayAdapter
. Penso che funzioni bene con l'aggiunta di valori di visualizzazione. L'unico problema è che non viene visualizzato alcun menu a discesa. Qualcuno sa come avere questo dropdown visibile? Ogni volta che dovrebbe vedere la discesa posso vedere log dei messaggi dicendo:DisplayListCanvas viene avviato su RenderNode non vincolato (senza mOwningView)
DisplayListCanvas: DisplayListCanvas è stato avviato sul RenderNode unbinded (senza mOwningView)
Il mio codice adattatore:
public class UserSearchAdapter extends ArrayAdapter<Profile> {
Context context;
ArrayList profiles;
public UserSearchAdapter(Context context, int resource, ArrayList<Profile> objects) {
super(context, resource, objects);
this.context = context;
this.profiles = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(this.getContext())
.inflate(R.layout.single_user_item, parent, false);
}
Profile profile = (Profile) profiles.get(position);
TextView text = (TextView) convertView.findViewById(R.id.single_user_name_text);
text.setText(profile.getDisplayName());
return convertView;
}
}
Il mio codice MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_member_supervisor);
activity = MemberSupervisorActivity.this;
Firebase.setAndroidContext(this);
autoCompleteUser = (AutoCompleteTextView) findViewById(R.id.auto_members);
profiles = new ArrayList<>();
members = new UserSearchAdapter(activity, R.layout.single_user_item, profiles);
autoCompleteUser.setAdapter(members);
autoCompleteUser.setThreshold(1);
autoCompleteUser.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
final Query auto = new Firebase(Constants.FIREBASE_USER_PROFILE).orderByChild("displayName").startAt(autoCompleteUser.getText().toString()).endAt(autoCompleteUser.getText().toString() + "~");
auto.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
profiles.clear();
Log.d("entered", autoCompleteUser.getText().toString());
for (DataSnapshot data : dataSnapshot.getChildren()) {
Profile profile = data.getValue(Profile.class);
profiles.add(profile);
Log.d("results", profile.getDisplayName());
}
members.notifyDataSetChanged();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
});
}
Quindi sto eseguendo anche l'avviso "DisplayListCanvas ...", e questo non è solo il risultato migliore, ma uno dei risultati SOLO. Mi sto chiedendo se puoi aiutare – Benjamin