您好我正在尝试实现搜索功能。我有一个扩展SearchResultActivity
的{{1}}类。我还编辑了ListActivity
文件以指示新活动。我有两个不同的阵列,长度不同,还有更多。我一直在网上浏览如何从AndroidManifest
检索数据,但我还没有运行搜索功能。请查看下面的所有代码,让我知道我需要做什么或可能做错了什么。 Android和Java上仍然是非常新的开发人员。所以一个好的和简单的解决方案将不胜感激。感谢。
ListView
答案 0 :(得分:1)
您可以创建自己的过滤器,以便在适配器类中搜索,如下所示
private List<WorldPopulation> worldpopulationlist = null;
private ArrayList<WorldPopulation> arraylist;
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
}
else
{
for (WorldPopulation wp : arraylist)
{
if (wp.getCountry().toLowerCase(Locale.getDefault()).contains(charText))
{
worldpopulationlist.add(wp);
}
}
}
notifyDataSetChanged();
}
并将其应用于您的edittext:
// Capture Text in EditText
editsearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
String text = editsearch.getText().toString().toLowerCase();
adapter.filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});
}
这是相同
的链接http://www.androidbegin.com/tutorial/android-search-listview-using-filter/
答案 1 :(得分:0)
是的,这就是我所做的。以后可能需要某人(我猜)。 在我的片段上,我写了这行代码
public void bindData(String strSearchText) {
Object[] arrayItems = getResources().getStringArray(R.array.BikeList);
if (strSearchText != null && strSearchText.length() > 0) {
List<Object> lstFilteredItems = new ArrayList<>();
for (Object item : arrayItems) {
if (((String)item).contains(strSearchText)) {
lstFilteredItems.add(item);
}
}
arrayItems = lstFilteredItems.toArray();
}
ArrayAdapter<Object> adapter = new ArrayAdapter<>(getActivity(),R.layout.fragment_sub_list,R.id.topText,arrayItems);
//ArrayAdapter adapter1 = ArrayAdapter.createFromResource(getActivity(), R.array.BikeList, android.R.layout.simple_list_item_1);
setListAdapter(adapter);
getListView().setOnItemClickListener(this);
}
然后在我的活动页面上,这就是我所做的。
public boolean onQueryTextChange(String strSearchText) {
myFragment.bindData(strSearchText);
return true;
}
有关如何在多个片段中实现此功能的任何想法都表示赞赏。感谢。