我正在使用库SearchView
提供的材料'com.miguelcatalan:materialsearchview:1.4.0'
。该库使用setSuggestions
在搜索视图中设置建议,如下面的代码所示。但是setSuggestions仅允许String[]
。我想从firebase加载项目列表,并放入建议中。问题是setSuggestion不允许ArrayList
。
materialSearchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
//Do some magic
mProgress.setMessage("Loading...");
mProgress.show();
mDatabasePlaces.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data:dataSnapshot.getChildren()){
Place models=data.getValue(Place.class);
placelist.add(models.getName());
}
mProgress.dismiss();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
materialSearchView.setSuggestions(placelist);
}
@Override
public void onSearchViewClosed() {
//Do some magic
}
});
}
在代码位置列表中是ArrayList
所不允许的materialSearchView.setSuggestions(placelist);
,所以我如何将该位置列表放入setSuggestions
。
答案 0 :(得分:3)
您可以像这样将其解析为String[]
String[] parsedArray = placelist.toArray(new String[placelist.size()])
答案 1 :(得分:1)
由于onDataChange
方法的异步行为,要完成工作,请移动以下代码行:
materialSearchView.setSuggestions(placelist);
在此代码行之后,在onDataChange
方法内:
mProgress.dismiss();
正如阿图尔·阿赫诺扬(Artur Akhnoyan)在回答中提到的那样,请将参数从placelist
更改为:
placelist.toArray(new String[placelist.size()])