我正在尝试在我的应用中实现搜索功能。唯一的区别是我没有实现搜索来搜索列表视图。我想突出显示搜索按钮。在我的应用活动中,我有100个小按钮。在顶部,有一个edittext,它必须搜索按钮并突出显示它们。我怎样才能实现它?
答案 0 :(得分:1)
好概念。
这是你的arryadepter
private class List_Adapter extends ArrayAdapter
{
private ArrayList<Sring> items; // this is your all buttons list
private ArrayList<String> itemsPosition; // this is your highlight list
public List_Adapter(Context context, int textViewResourceId, ArrayList<Sring> la, final ArrayList<String> itemsPosition)
{
super(context, textViewResourceId, la);
this.items = la;
this.itemsPosition = itemsPosition;
}
public View getView(final int rowIndex, View convertView, ViewGroup parent)
{
if (itemsPosition!=null)
{
for (int j = 0; j < itemsPosition.size(); j++)
{
final String textOut = itemsPosition.get(j);
if (items.getTag().contains(textOut))
{
// hilight your view
}
}
}
return v;
}
}
这是您的edittext listioner
edittext.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(final CharSequence chrSeq, final int start, final int before, final int count)
{
if (edittext.getText().length() == 0)
{
listAdapter = new List_Adapter(thisActivity, R.layout.existingcaregiverlistview, chemical name arry,chemical eliment arry);
listOfCaregiver.setAdapter(listAdapter);
}
else
{
final ArrayList<String> arraySort = new ArrayList<String>();
int textlength = 0;
textlength = edittext.getText().length();
arraySort.clear();
for (int i = 0; i < mainList.size(); i++)
{
if (edittext.getText().toString().toLowerCase().contains((String) mainList.get(i).getTag().toString().toLowerCase().subSequence(0, textlength)))
{
arraySort.add(mainList.get(i))
}
}
listAdapter = new List_Adapter(thisActivity, R.layout.existingcaregiverlistview, chemical name arry,chemical eliment arry);
listOfCaregiver.setAdapter(listAdapter);
}
}
});
答案 1 :(得分:0)
如果您还没有,我建议为您用于按钮的drawable创建state list。然后你可以利用其中一种状态(android:state_hovered)作为高亮状态。当您在与搜索词匹配的任何按钮上运行过滤时,将状态更改为该突出显示状态。