【发布时间】:2017-04-29 11:28:43
【问题描述】:
我正在尝试使用 FirebaseListAdapter 填充 AutoCompleteTextView 的下拉列表,它已成功填充来自 firebase 的数据,但是当我单击下拉列表中的项目时,出现以下堆栈跟踪错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.CharSequence android.widget.Filter.convertResultToString(java.lang.Object)”
在 android.widget.AutoCompleteTextView.convertSelectionToString(AutoCompleteTextView.java:825)
在 android.widget.AutoCompleteTextView.buildImeCompletions(AutoCompleteTextView.java:1140) 在 android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1096)
在 android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:984)
在 android.widget.AutoCompleteTextView.access$900(AutoCompleteTextView.java:91)
在 android.widget.AutoCompleteTextView$PopupDataSetObserver$1.run(AutoCompleteTextView.java:1306)
在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5942) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
FireBaseListAdapter
public class SearchListAdapter extends FirebaseListAdapter<Product> implements Filterable {
private static final String TAG = "SearchListAdapter";
public SearchListAdapter(Activity activity, Class<Product> modelClass, int modelLayout, Query ref){
super(activity,modelClass,modelLayout,ref);
this.mActivity=activity;
}
@Override
protected void populateView(View v, Product model, int position) {
TextView textView= (TextView) v.findViewById(R.id.txt_item);
Log.e(TAG,model.getName());
textView.setText(model.getName());
}
@Override
public Filter getFilter() {
return null;
}
}
从 MainActivity 调用 FirebaseListAdapter
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String searchString=autoCompleteTextView.getText().toString();
if (!searchString.equals("")) {
ref = FirebaseDatabase.getInstance().getReference().child("products").orderByChild("name").startAt(searchString).endAt(searchString + "\uf8ff");
SearchListAdapter searchListAdapter=new SearchListAdapter(MainActivity.this,Product.class,R.layout.single_list_item,ref);
autoCompleteTextView.setAdapter(searchListAdapter);
autoCompleteTextView.showDropDown();
autoCompleteTextView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.e(TAG,"itemClicked");
autoCompleteTextView.setText("");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
else if (searchString.equals("")){
}
}
【问题讨论】:
标签: android firebase autocompletetextview