public class MainActivity extends Activity {
/**
* Called when the activity is first created.
*/
private ListView lv1;
private String lv_arr[] =
{"Android", "iPhone", "BlackBerry", "me", "J2ME", "Listview", "ArrayAdapter", "ListItem", "Us", "UK", "India"};
ListView lst;
EditText edt;
ArrayAdapter<String> arrad;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv1 = (ListView) findViewById(R.id.ListView01);
edt = (EditText) findViewById(R.id.EditText01);
arrad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lv_arr);
lv1.setAdapter(arrad);
// By using setTextFilterEnabled method in listview we can filter the listview items.
lv1.setTextFilterEnabled(true);
edt.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
MainActivity.this.arrad.getFilter().filter(arg0);
}
});
}
}
안녕하세요. 안드로이드 공부를 하는 학생입니다.
저는 EditText에 값을 입력했을 때 ListView에 있는 항목들을 실시간으로 검색하는 것을 하고 싶습니다.
TextWatcher를 이용하면 가능하다고 해서, 공부를 하던 중에 궁금한 점이 있어 질문을 올립니다.
위 코드는 stackoverflow에서 가져왔습니다.
위 코드를 실행시키면 실행은 잘되지만, 제 코드에 적용시키기 쉽지 않네요..
저는 baseAdapter를 상속받아, custom arrayAdapter를 만들었는데,
이런 경우에는 저 코드를 그대로 이용할 수 없는 것일까요?
또한 afterTextChanged 메소드에 getFilter()는 어떻게 사용되는 것인지..
초보자에게 도움을 주시면 감사하겠습니다.