【发布时间】:2017-12-08 17:39:46
【问题描述】:
我尝试从 Firebase 中检索 itemName 并尝试将其用于 searchView。而且我不知道我在以下代码中的逻辑有什么问题。
这是我的数据快照:-
protected void onStart() {
super.onStart();
databaseItems.child("items").orderByChild("itemName").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
itemFinalList.clear();
for (DataSnapshot itemSnapShot : dataSnapshot.getChildren()) {
ItemInventory itemInventoryTest = itemSnapShot.getValue(ItemInventory.class);
itemFinalList.add(itemInventoryTest);
}
ItemList adapter = new ItemList(SearchActivity.this, itemFinalList);
listFinal.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
和searchview功能
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_search, menu);
MenuItem item = menu.findItem(R.id.menuSearch);
SearchView searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
这是我的“itemList”类,因为它正在我的数据快照中使用:-
public class ItemList extends ArrayAdapter<ItemInventory> {
private Activity context;
private List<ItemInventory> items;
public ItemList(Activity context, List<ItemInventory> items) {
super(context, R.layout.list_layout, items);
this.context = context;
this.items = items;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.list_layout, null, true);
TextView textViewCategory = (TextView) listViewItem.findViewById(R.id.textViewCategory);
TextView textViewName = (TextView) listViewItem.findViewById(R.id.textViewName);
TextView textViewCost = (TextView) listViewItem.findViewById(R.id.textViewCost);
final TextView textViewCount = (TextView) listViewItem.findViewById(R.id.textViewCount);
ItemInventory itemInventoryTest = items.get(position);
textViewCategory.setText(itemInventoryTest.getItemCategory());
textViewName.setText(itemInventoryTest.getItemName());
textViewCost.setText(itemInventoryTest.getItemCost());
textViewCount.setText(itemInventoryTest.getItemCount());
return listViewItem;
}
}
我还可以为我更改数据类型的 searchList 创建一个新类。
【问题讨论】:
标签: java android firebase firebase-realtime-database