【发布时间】:2017-04-13 21:14:39
【问题描述】:
我想编写一个查询,以便使用编辑文本过滤数据,下面的代码确实有效,但会带来所有不需要的搜索数据。你能帮我么? JSON对象如下:我要过滤掉的数据是用户名
public class SearchActivity extends AppCompatActivity {
ListView searchList;
DatabaseReference databaseReference;
FirebaseListAdapter<SearchDetails> listAdapter;
String search;
EditText editTextSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
searchList = (ListView) findViewById(R.id.listViewSearch);
databaseReference = FirebaseDatabase.getInstance().getReference().child("Search Users");
editTextSearch = (EditText) findViewById(R.id.editTextSearch);
editTextSearch.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) {
search = editTextSearch.getText().toString();
if (search.equals("")){
searchList.setAdapter(null);
}else{
searchList.setAdapter(listAdapter);
}
}
});
Query query = databaseReference.startAt(search).endAt(search+"~").limitToFirst(10);
listAdapter = new FirebaseListAdapter<SearchDetails>(
this,
SearchDetails.class,
R.layout.search_layout,
query
) {
@Override
protected void populateView(View v, SearchDetails model, int position) {
TextView username = (TextView) v.findViewById(R.id.textViewUsername);
username.setText(model.getUsername());
TextView name = (TextView) v.findViewById(R.id.textViewName);
name.setText(model.getName());
}
};
}
}
【问题讨论】:
-
您能具体说明一下,您要获取哪些数据?这个问题对我来说不是很清楚。
-
我想只过滤掉用户名
-
嘿@Jama 我在下面为您添加了答案,如果这有帮助和/或您想了解更多信息,请告诉我。
标签: android firebase firebase-realtime-database firebaseui