作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想编写一个查询,以便使用 edittext 过滤数据,下面的代码确实有效,但会带来所有不需要的搜索数据。你能帮我么? 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());
}
};
}
}
最佳答案
为了解决这个问题,我们需要了解一些关于 Firebase 的事情,很多开发人员可能会忽略这些事情。
我认为您手头的问题是“拥有一个允许用户搜索您的用户的用户名的EditText
。
我建议您如何通过像这样扁平化数据结构来解决这个问题
您可以在 usernames
数组中包含对象。每个对象的键是 username
,值是另一个带有 empty-key : ""
的对象,就像这样。
然后您可以拥有另一个 users
数组,其中的键同样是 usernames
,其余数据作为其下的对象存在。
现在您可以轻松地对用户名
运行过滤查询,而不必担心在该查询中获取不必要数据的开销。
一旦知道选择了哪个 username
,就可以查询 users
以从数组中获取确切的 user
。
关于android - 如何编写 Firebase 查询来过滤掉数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42811888/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!