这是来自Main Activity类。我有一个数组的arraylist,需要为listview创建一个搜索栏。
adapter = new ArrayAdapter<String[]>(this, R.layout.list_view, android.R.id.text1, spellList)
{
public View getView(int position, View convertView, ViewGroup parent)
{
View view = super.getView(position, convertView, parent);
String[] entry = spellList.get(position);
TextView text1 = (TextView) view.findViewById(android.R.id.text1);
TextView text2 = (TextView) view.findViewById(android.R.id.text2);
text1.setText(entry[0]);
text2.setText(entry[1]);
return view;
}
};
wizList.setAdapter(adapter);
searchText.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) {
}
});
这是字符串数组的Arraylist中的数据。如果通过法术名称搜索,则首选。
final ArrayList<String[]> spellList;
public WizardDatabase()
{
spellList = new ArrayList<>();
spellList.add(new String[] { "Resistance", "Subject gains +1 on saving throws."});
spellList.add(new String[] { "Acid Splash", "Orb deals 1d3 acid damage."});
spellList.add(new String[] { "Detech Poison", "Detects poison in one creature or small object."});
public ArrayList<String[]> getList()
{
return spellList;
}
感谢。
答案 0 :(得分:0)
如果只是简单的字符串搜索,请使用以下代码
searchText.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) {
if (s.length() > 3) { // it's for performance I've put 3 you can change it
adapter.getFilter().filter(s.toString());
}
}
});